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.
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.
07.03.2007. u 09:42
savkic Igor Savkić
Moderator Član broj: 92186 Poruke: 1662 *.adsl-1.sezampro.yu.
> 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.
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
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) .
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;
Marcha
-----------------------------------
Pretpostavka je majka zajeba.
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. :)
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