Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Otvaranje formi,na koji nacin

[es] :: Pascal / Delphi / Kylix :: Otvaranje formi,na koji nacin

Strane: 1 2 3

[ Pregleda: 9858 | Odgovora: 55 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

popmilan76

Član broj: 295089
Poruke: 1337
*.dynamic.sbb.rs.



+5 Profil

icon Re: Otvaranje formi,na koji nacin18.11.2013. u 15:48 - pre 126 meseci
Dakle imam dve forme,ni jedna od njih nije main form,dakle iz main form ulazum u prvu modalformu,FrmPriznanje,i to mi se otvori....zatim iz prve forme ulazim u drugu modalformu...pomocu sledeceg koda....

procedure TFrmPriznanje.DBGrid1DblClick(Sender: TObject);
var
form4 : TFrmPotvrda;
begin
form4 := TFrmPotvrda.Create(nil);
try

form4.Edit1.Text := combobox1.Text ;
form4.DateTimePicker1.Date := dbgrid1.Fields[1].asdatetime;
form4.Edit2.Text := dbgrid1.Fields [3].asstring;
form4.memo1.Text := dbmemo1.Field.AsString ;


form4.Showmodal;


finally
form4.Free;

end;
end;

end.

u ovoj prvoj formi mi se nalazi dataset,sa query...i dupli klik na dbgrid,i pojavi mi se druga forma,FrmPotvrda...i u njoj imam,edit1,memo1 i jos ponesto....i dva dugmeta,i u dugmeti OK,imam kod koji treba da zatvori drugu modalformu,i ostane samo prva,sa izmenama iz druge...i u tom dugmetu imam sledeci kod....

procedure TFrmPotvrda.BitBtn1Click(Sender: TObject);

var

form3 : TFrmPriznanje;

begin
form3 := TFrmPriznanje.Create(nil);
try
form3.Query2.Active := true;
while NOT form3.Query2.Eof do begin
//Now fill the result in ComboBox1.

form3.ComboBox1.Items.Add(form3.query2['redbr']);

form3.Query2.Next;

form3.dbgrid1.edit;
...
...
...
form3.post;

end;

form3.Showmodal;




finally
form3.ShowModal ;
end;
end;


Molio bih Vas za pomoc ,jako mi je potrebna....


 
Odgovor na temu

komplikator
Programer / sys. inženjering
CRO

Član broj: 29755
Poruke: 158
*.adsl.net.t-com.hr.

ICQ: 13387003


+8 Profil

icon Re: Otvaranje formi,na koji nacin18.11.2013. u 17:18 - pre 126 meseci
Iskreno, sve ti je poslagano zbrda zdola i kao što sam ti davno pisao nisi pohvatao koncepciju dizajniranja win aplikacija i osnove Delphi OOP.
Učeći metodom pokušaja i pogreške ćeš ubiti previše vremena, neke osnove se jednostavno moraju znati. Najtoplije ti savjetujem da proučiš knjigu Delphi 2005 bez tajni prevedena ti je s engleskog (izvrstan autor Marco Cantu).

Gledaj, kod win gui aplikacija je uvijek jedna forma osnovna. Razlog je u tome kako windoze rade i kako prenose poruke i još ponešto.
Ozbiljnije pisani programi koriste svoje bootstrapere koji dinamički učitavaju forme i module. Ja recimo imam neku glavnu konfiguracijsku klasu koja radi sva moguća podešavanja, inicializacije, učitavanja, prati ovlasti i sl. i prema tome kreira datamodule, poziva forme koje su zapravo naslijeđene klase i koje su predstavljaju neke entitete i sadrže razne metode za pretraživanja, ažuriranja, obrade, a svaka se može prikazati, prikazati modalno ili prikazati na kartici, no to je nešto na što je otišlo 12 mjeseci rada i dvocifren broj staža u oop programiranju.

Ono što tebe buni je razlika između običnih i modalnih formi, način kako ih kreirati i kako ih ubijati tj. oslobađati i redoslijed radnji.
Možeš otvarati modalne forme jednu za drugom no aktivna je samo ona na vrhu i nema micanja sve dok ne vrati svoj modalni rezultat. Predlažem ti da napraviš data modul koji će biti glavni i na njemu budu svi dijeljeni datasetovi pa iz njega po potrebi kreiraš, otvaraš i prikazuješ što trebaš.

Na žalost previše je toga za pisati i preporučujem ti prevedene knjige kao što su Delphi 2005 i Delphi 6 vodič za programere, a onda imaš dovoljno znanja da znaš kako dalje.

Želim ti savjetovati još par stvari:

Bježi od pisanja poslovne logike unutar event handlera, to je jako loša ideja i loša praksa. Nauči to izbjegavati još dok je vrijeme i nije uzelo maha. Pokušaj se naučiti da što više raznih obrada, rezultata, provjera i sl. izdvajaš u funkcije prema određenim scope-ima, a kad dovoljno stasaš to sve digneš na nivo klasa i metoda.

U današnje vrijeme se manje koristi madžarska notacija no klasama, funkcijama i varijablama dodijeljuj neka smislena imena, to će ti također jednog dana uštedjeti nešto kose na glavi, a kôd je čitljiviji i tebi i drugima.

Piši komentare, kao i ovo s nazivima štedi kosu, poneku pepeljaru ili čašu, a k tome spada u osnovna pravila programiranja.

Pratim tvoje postove i izradu blagajne i lijepo je što imaš entuzijazam i volju nešto raditi i naučiti i samo naprijed!
God is real unless is declared as integer.
 
Odgovor na temu

popmilan76

Član broj: 295089
Poruke: 1337
*.dynamic.sbb.rs.



+5 Profil

icon Re: Otvaranje formi,na koji nacin18.11.2013. u 17:30 - pre 126 meseci
Hvala na ohrabrenju....jos sam daleko od pisanja klasa i metoda...Pomenutu knjigu imam,ali u njoj nema bas nista,sto se tice toga,samo kako se otvara modalna forma i to je to....
 
Odgovor na temu

popmilan76

Član broj: 295089
Poruke: 1337
*.dynamic.sbb.rs.



+5 Profil

icon Re: Otvaranje formi,na koji nacin18.11.2013. u 19:48 - pre 126 meseci
Ono sto meni treba ,jeste da imam pored jedne otvorene glavne main form,iz nje otvaram drugu,a iz druge trecu,i treba iz trece da se vratim na drugu,sa izmenjenim podacima....Ne znam jel me neko razume...
 
Odgovor na temu

Rapaic Rajko
Bgd

Član broj: 4105
Poruke: 810
*.teol.net.



+62 Profil

icon Re: Otvaranje formi,na koji nacin19.11.2013. u 10:12 - pre 126 meseci
Ja sam te razumeo, al onaj kod... auh. Otkud ti samo ideja da ponovo kreiras FrmPriznanje...
Evo ti prva pomoc:

Code:

procedure TFrmPriznanje.DBGrid1DblClick(Sender: TObject);
var
  form4 : TFrmPotvrda;
begin
  form4 := TFrmPotvrda.Create(nil);
  try
    form4.Edit1.Text := combobox1.Text ;
    form4.DateTimePicker1.Date := dbgrid1.Fields[1].asdatetime;
    form4.Edit2.Text := dbgrid1.Fields [3].asstring;
    form4.memo1.Text := dbmemo1.Field.AsString ;

    form4.Showmodal;
    // na ovom mestu prepisi izmene, direktno citas iz form4 (FrmPotvrda), i napucavas gde treba na OVOJ formi (FrmPriznanje)

  finally
    form4.Free; 
  end;
end;


Pozz
 
Odgovor na temu

popmilan76

Član broj: 295089
Poruke: 1337
*.dynamic.sbb.rs.



+5 Profil

icon Re: Otvaranje formi,na koji nacin19.11.2013. u 20:26 - pre 126 meseci
Joj,bas sam glup,ali stvarno ne razumem...ovo sa showmodal me izludjuje.....u onom delu sto si napisao da prepisem one izmene,opet nece.....i ja tu krajnju formu tek treba da menjam......znaci imam combobox iz njega da menjam dbgrid1,iz prethodne forme....
 
Odgovor na temu

popmilan76

Član broj: 295089
Poruke: 1337
*.dynamic.sbb.rs.



+5 Profil

icon Re: Otvaranje formi,na koji nacin19.11.2013. u 21:24 - pre 126 meseci
I jos nesto,mogu li nastaviti raditi sa show,bez showmodal,,,,ali da u dp file izbrisem autocreate sve forme sem pocetne....mislim one ce ostati u onom delu autocreate,preko options....ako ih izbrisem ovamo,da li ce se stvarno izbrisati ili ce ih i dalje praviti kao autocreate...
 
Odgovor na temu

komplikator
Programer / sys. inženjering
CRO

Član broj: 29755
Poruke: 158
*.adsl.net.t-com.hr.

ICQ: 13387003


+8 Profil

icon Re: Otvaranje formi,na koji nacin20.11.2013. u 12:38 - pre 126 meseci
Hajdemo ovako:

Glavni dpr tj. projektni file je rezultat onoga što postaviš u autocreate listi u postavkama projekta.
Kreiraš li forme sam, dinamički tada ti ne treba taj autocreate odnosno Application.CreateForm tvojih formi, izuzev one početne (što sam ti savjetovao da bude svim formama vidljiv datamodul), a način kreiranja formi nema nikakve veze sa
prikazom i sakrivanjem forme ili modalnim prikazom.

Običan ili modalni prikaz se razlikuju upravo po modalnosti, modalna forma se mora zatvoriti da bi se mogao vratiti njenom roditelju. Bitno je da forme kreiraš prije pozivanja, a vjerujem da znaš i to da se modalna forma ne može sakriti. Ako se međusobno
nešto ne vidi tada ti negdje nešto nedostaje u uses listama. Kod uses lista ćeš vjerojatno uletjeti u kružne reference koje možeš raspetljati tako da jedan unit dodaješ u implementaciju, a ovaj drugi prvome u interface, ovisno gdje trebaš što pozvati ili deklarirati.

God is real unless is declared as integer.
 
Odgovor na temu

popmilan76

Član broj: 295089
Poruke: 1337
*.dynamic.sbb.rs.



+5 Profil

icon Re: Otvaranje formi,na koji nacin20.11.2013. u 15:30 - pre 126 meseci
Da to sam razumeo i znam,ali kada izbrisem u delu dp fajla ovaj deo

Application.CreateForm(TFrmUnos, FrmUnos);
Application.CreateForm(TFrmPriznanje, FrmPriznanje);
Application.CreateForm(TFrmPotvrda, FrmPotvrda);

dakle druge forme ,koje nisu main....

i dalje radi kao da su sve forme autocreate,i one su poslke u onom delu ,ne auto create,nego available form.....

Da li svi programeri rade sa showmodal ili ne.....

I koliko je to bitno....
 
Odgovor na temu

captPicard
programer
more i planine

Član broj: 216084
Poruke: 1119



+19 Profil

icon Re: Otvaranje formi,na koji nacin20.11.2013. u 19:53 - pre 126 meseci
Bitno je šta ti treba, ako mora biti prikazana samo ta forma onda je bitno. Ali ako radiš sa "nemodalnim" formama onda moraš dobro znati šta radiš, pogotovo vezano za transakcije. Preporučam da za početak pohvataš kako se radi sa modalnim formama a nakon toga kreneše dalje.
F
 
Odgovor na temu

popmilan76

Član broj: 295089
Poruke: 1337
*.dynamic.sbb.rs.



+5 Profil

icon Re: Otvaranje formi,na koji nacin20.11.2013. u 20:58 - pre 126 meseci
pogledaj inbox pa vidi sta moze da se uradi...unapred zahvala....
 
Odgovor na temu

popmilan76

Član broj: 295089
Poruke: 1337
*.dynamic.sbb.rs.



+5 Profil

icon Re: Otvaranje formi,na koji nacin24.11.2013. u 13:02 - pre 126 meseci
evo postavicu moj projekat,znaci treba iz frmpotvrda da izmenim dbgrid u frmpriznanje,ali da oba bude otvorena....Hvala
Prikačeni fajlovi
 
Odgovor na temu

((BugA))
Igor Djordjevic
Bor, Srbija

Član broj: 29241
Poruke: 196
*.dynamic.sbb.rs.

ICQ: 66516695
Sajt: www.MalamutKlub.com


+17 Profil

icon Re: Otvaranje formi,na koji nacin24.11.2013. u 15:25 - pre 126 meseci
Nisam siguran sta tacno zelis kad kazes da "oba bude otvorena" - da li da "ova" (frmPriznanje ili frmPotvrda?) bude otvorena, ili da "obe" budu otvorene... Elem, evo jednog primera kako da iz frmPriznanje modalno otvoris frmPotvrda, izmenis vrednosti i klikom na "Potvrdi" zatvoris frmPotvrda a izmenjene vrednosti prikazes na frmPriznanje.

Potrebne izmene:
Unit3.pas > FrmPriznanje > Query1, property "RequestLive" postavi na "True".
Unit4.pas > FrmPotvrda > BitBtn1, property "ModalResult" postavi na "mrOk".
Unit3.pas > TFrmPriznanje.DBGrid1DblClick() procedura, izmeni je da izgleda ovako:
Code:
procedure TFrmPriznanje.DBGrid1DblClick(Sender: TObject);
var
  form4 : TFrmPotvrda;
begin
  form4 := TFrmPotvrda.Create(nil);
  try
    form4.Edit1.Text := combobox1.Text ;
    form4.DateTimePicker1.Date := dbgrid1.Fields[1].asdatetime;
    form4.Edit2.Text := dbgrid1.Fields [3].asstring;
    form4.memo1.Text := dbmemo1.Field.AsString ;
    if (form4.Showmodal = mrOk) then // proveri da li smo kliknuli na "Potvrdi" (zato smo postavili ModalResult := mrOk)
    begin
      combobox1.Text := form4.Edit1.Text;
      dbgrid1.DataSource.DataSet.Edit; // za ovo nam je neophodno ono RequestLive := True odozgo
      dbgrid1.Fields[1].AsDatetime := form4.DateTimePicker1.Date;
      dbgrid1.Fields[3].AsString := form4.Edit2.Text;
      dbmemo1.Field.AsString := form4.Memo1.Text;
      dbgrid1.DataSource.DataSet.Post;
    end;
  finally
    form4.Free;
  end;
end;

Ovo radi, ali nisam siguran koliko je ispravno ovako raditi, mozda postoji neki drugi (preporuceni) nacin, mozda moze neko da prokomentarise, rekoh ja nisam sa ovim odaaavno radio.

Jos jedna (veoma bitna) stvar, ono sto su te drugi vec savetovali - obrati paznju na preglednost napisanog koda. Mozda ti to zvuci nebitno, ili te mrzi da na to obracas paznju dok "vezbas" i pises test aplikacije, ali navika koju sad steknes ce te (hteo ti to ili ne) kasnije pratiti i kada predjes na mnogo ozbiljnije projekte, a nepregledan kod je muka ziva za odrzavanje. Cak i svoju sopstvenu aplikaciju kada otvoris posle par meseci pauze moze ti biti nejasno sta i kako radi, a zamisli kako je kada gledas tudj kod - ako je jos "aljkav"... patnja je to :) Za pocetak, mozes pogledati preporuke odavde -- http://edn.embarcadero.com/article/10280.
 
Odgovor na temu

popmilan76

Član broj: 295089
Poruke: 1337
*.dynamic.sbb.rs.



+5 Profil

icon Re: Otvaranje formi,na koji nacin24.11.2013. u 18:11 - pre 126 meseci
Da,za request true,imam obicaj da stavim uvek na true,i to je okej...sto se tice preglednosti,nemam tu naviku pisanja komentara,znam da treba,ali sta cu takav sam....da to je okej ,radi i meni ,samo treba promena u ovom delu.....

dbgrid1.DataSource.DataSet.Edit; // za ovo nam je neophodno ono RequestLive := True odozgo
dbgrid1.Fields[5].asstring := form4.ComboBox1.Text ;
dbgrid1.DataSource.DataSet.Post;


zasto mislis da ovo nije pravilno,kakve mogu biti posledice.....ili je ovo sasvim okej......


i jos nesto,sta valja stavljati u event formclose,jel dovoljno samo free,ili jos nesto...ili nista od toga....
 
Odgovor na temu

Rapaic Rajko
Bgd

Član broj: 4105
Poruke: 810
*.teol.net.



+62 Profil

icon Re: Otvaranje formi,na koji nacin25.11.2013. u 11:53 - pre 126 meseci
Ne stavljaj nista u OnClose() event modalne forme, jer posle zatvaranja (izlaz iz metode ShowModal()) jos citas podatke sa nje, zar ne? Ako stavis CloseAction = caFree, forma se na Close() samoubije; nista od citanja podataka.
Imas ispod u finally delu ubijanje forme (form4.Free), i tako neka ostane.

Pozz
 
Odgovor na temu

popmilan76

Član broj: 295089
Poruke: 1337
*.dynamic.sbb.rs.



+5 Profil

icon Re: Otvaranje formi,na koji nacin26.11.2013. u 18:29 - pre 126 meseci
Jel na isti nacin otvaram i Reporte,kao i forme,samo promenim umesto showmodal,stavljam preview....
 
Odgovor na temu

captPicard
programer
more i planine

Član broj: 216084
Poruke: 1119



+19 Profil

icon Re: Otvaranje formi,na koji nacin27.11.2013. u 07:24 - pre 126 meseci
Imaš isto Preview i PreviewModal;
F
 
Odgovor na temu

popmilan76

Član broj: 295089
Poruke: 1337
*.dynamic.sbb.rs.



+5 Profil

icon Re: Otvaranje formi,na koji nacin27.11.2013. u 09:33 - pre 126 meseci
Kod mene ima samo Preview....u istoj aplikaciji imam onbefore print event nad ti reportom...posto treba da prikaze samo jedan record u tom uzvestaju....ja stavljam ovaj kod...

procedure TRepOdjave.DetailBand1BeforePrint(Sender: TQRCustomBand;
var PrintBand: Boolean);

begin

if Table1RedBr.Value = strtoint(frmpoj.edit1.text) then begin
qrdbtext1.Enabled := true;
qrdbtext2.Enabled := true;
qrdbtext3.Enabled := true;
qrdbtext4.Enabled := true;
qrdbtext5.Enabled := true;
qrdbtext6.Enabled := true;
qrdbtext7.Enabled := true;
qrdbtext8.Enabled := true;

end
else
begin
qrdbtext1.Enabled := false;
qrdbtext2.Enabled := false;
qrdbtext3.Enabled := false;
qrdbtext4.Enabled := false;
qrdbtext5.Enabled := false;
qrdbtext6.Enabled := false;
qrdbtext7.Enabled := false;
qrdbtext8.Enabled := false;
end;
end;

end.


to mi radi u drugim aplikacijama,ali nece sada od kada sam krenuo sa showmodal....ova frmpoj je showmodal

 
Odgovor na temu

Rapaic Rajko
Bgd

Član broj: 4105
Poruke: 810
*.teol.net.



+62 Profil

icon Re: Otvaranje formi,na koji nacin27.11.2013. u 10:18 - pre 126 meseci
Probaj sa

Code:

  if Table1RedBr.AsInteger = strtoint(frmpoj.edit1.text) then begin


ili

Code:

  if Table1RedBr.AsString = trim(frmpoj.edit1.text) then begin


Value je variant, i nema garancije da ce (automatska) konverzija u neki tip biti korektna.

Pozz
 
Odgovor na temu

popmilan76

Član broj: 295089
Poruke: 1337
*.dynamic.sbb.rs.



+5 Profil

icon Re: Otvaranje formi,na koji nacin27.11.2013. u 10:42 - pre 126 meseci
Probao i ponovo mi izlazi ista greska....izadje ovo....


access vialation at adress 0048cb9a in module odjave.exe


a kada umesto edit1.text ,stavim neki broj recimo 2,izadje mi normalno sve....izadje drugi record ,kao sto i treba...
 
Odgovor na temu

[es] :: Pascal / Delphi / Kylix :: Otvaranje formi,na koji nacin

Strane: 1 2 3

[ Pregleda: 9858 | Odgovora: 55 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.