[ vortex77 @ 07.03.2007. 09:42 ] @
Problem je sledeci :

Projekat se sastoji od :
1) Glavnog fajla u kome sam kreirao form sa par dugmica
2) dataModul-a na kojem se postavljeni DataSet i DataSource
3) Frame-a na kome se nalaze DB komponente (DBEdit i DBGrid)

Princip rada je da se pritiskom na dugme, dinamicki kreira Frame ( i sve komponente na njemu) i ispisuju podaci iz baze.

Za kreiranje frame-a koristim :

procedure TForm1.NapraviF;
begin
temp := TFrame.Create(Self);
temp.Parent := From1;
.
.
.
end;

Sve ovo radi bas kako bi trebalo. Problem nastaje kada hocu da napravim onDataChange za DataSource u DataModule-u.
Svaka interakcija sa komponentama u frame-u (iz DataModule-a) pravi gresku prilikom kompajliranja.
Jasno mi je zasto se ovo desava, ali ne znam kako da razresim ovaj problem.



[ savkic @ 07.03.2007. 10:19 ] @
> Svaka interakcija sa komponentama u frame-u (iz DataModule-a) pravi gresku prilikom kompajliranja.
> Jasno mi je zasto se ovo desava, ali ne znam kako da razresim ovaj problem.

Daj primer koda i grešku koju dobiješ.
[ vortex77 @ 07.03.2007. 10:42 ] @
Code:

Code:


procedure TdataBS.QIBS_dsDataChange(Sender: TObject; Field: TField);
begin
  if QIBS.FindField('birac').AsString = 'yes' then
     MainF.Frame.IBSbirac_da.Checked := true
  else
     MainF.Frame.IBSbirac_ne.Checked := true;



ovde je QIBS query koji koristim za citanje podataka iz baze, MainF - glavni form, Frame - public promenjiva koja mi sluzi za kreiranje framova ( MainF.Frame := TFrame.Create(Self); MainF.Frame.Parent := MainF;) a IBSbirac_da - RadioBtn

Error:
[Error] data_BS.pas(63): Undeclared identifier: 'IBSbirac_da'

-> data_BS.pas (data modul)

Ali kao sto sam rekao, poznato mi je zbog cega nastaje greska (pokusavam da pristupim komponenti koja jos uvek "ne postoji").

Problem je kako pristupiti komponenti koja nastaje dinamicki u toku run-time-a.
[ savkic @ 07.03.2007. 11:50 ] @
> Problem je kako pristupiti komponenti koja nastaje dinamicki u toku run-time-a.

Pogledaj FindComponent ili FindControl.
[ vortex77 @ 07.03.2007. 12:31 ] @
Probao sam, ali je u tom slucaju nemoguce prici Checked svojstvu koje meni i treba (koliko sam video, metode vracaju TComponent i TWinControl koje nemaju ovo svojstvo) .
[ marcha @ 07.03.2007. 12:45 ] @
Citat:
vortex77: Probao sam, ali je u tom slucaju nemoguce prici Checked svojstvu koje meni i treba (koliko sam video, metode vracaju TComponent i TWinControl koje nemaju ovo svojstvo) .


Probaj ovako:

Code:

....
var 
  C:TComponent; 
begin
  c := FindComponent('MojRB');
  if  Assigned(c) and (c is TRadioButton) then 
     TRadioButton(c).Checked:=true;
end;
[ vortex77 @ 07.03.2007. 13:38 ] @
Mislim da je to TO!

Veliko hvala.

p.s. U medjuvremenu sam pronasao i neke komponente koje ove stvari odradjuju same ( na osnovu podataka iz baze), tako da bih licno preporucio svima da probaju da iskoriste ove komponente. :)
[ aleksandarpopov @ 07.03.2007. 15:56 ] @
@vortex77
Na koje komponente mislis?
[ vortex77 @ 08.03.2007. 11:00 ] @
Mislio sam na komponente koje razresavaju moj problem :))

Problem mi je bio kako da prikazem ne Boolean vrednosti (recimo tipa SET) iz baze. Da bih to uradio do sada sam koristio onDataChange za Query i na njemu rucno setovao radioBtn za odredjene vrednosti (np. imam u bazi vrednosti 'Musko', 'Zensko' i hocu da korisniku pruzim izbor preko RadioBtn-a). Sve je bilo ok dok sam radio sa Design Time komponentama. Kada sam presao na Run Time creation (u ovom slucaju sam na pritisak dugmeta kreirao odgovarajuci Frame) doslo je do problema prilikom kompajliranja, jer u design time-u RadioBtn jos nisu bili kreirani, tako da direktna dodela vrednosti (Checked := true/false) nije funcionisala.
Malo sam googlao i pronasao sam komponente koje omogucuju custom dodelu vrednosti za RBtn iz baze (znaci u properties za Rbtn postavim checked := true kada je vrednost := 'Musko') i time razresio ovaj problem. Ime komponenti koje sam ja nasao su : SweetControls , ali pretpostavljam da postoji jos slicnih.

Sajt koji ja uglavnom koristim za pretragu novih komponenti je www.vclcomponents.com

Nadam se da ce ti ovo pomoci :))
[ aleksandarpopov @ 08.03.2007. 11:57 ] @
Aha, ok... ja sam na nesto drugo mislio.
Pozdrav!