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

Problem u komunikaciji sa formama...

[es] :: Pascal / Delphi / Kylix :: Problem u komunikaciji sa formama...

[ Pregleda: 1052 | Odgovora: 3 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

mojeKorIme
BiH

Član broj: 59512
Poruke: 350
31.176.239.*



+1 Profil

icon Problem u komunikaciji sa formama...17.08.2012. u 09:40 - pre 142 meseci
Molim Vas da mi pomognete.. totalno sam se zapetljao..
Priča je ova.. kreiram MDI aplikaciju i pokušavam iz child forme da pozovem drugu formu kojoj ću postaviti jednu vrijednost
Labela i onda iz te forme vratiti neku drugu vrijednost. Klasičan primjer računa i pretrage artikala.. kada nađem artikal vračam ga na račun.
Code:

function jeLiOtvoren(naziv:string):boolean;
var
  ima:boolean;
  i:integer;
begin
  ima:=false;
  for i := 0 to glavnaforma.MDIChildCount - 1 do
  if glavnaforma.MDIChildren[i].Name = naziv then
    ima:=true;
    jeLiOtvoren:=ima;

end;

procedure tglavnaForma.otvoriProzor(nazivProzora:string;tab:integer);
var i,j:integer;

    fc : TFormClass;
    f : TForm;

begin



if not jeLiOtvoren(nazivProzora) then
begin
  fc := TFormClass(FindClass('T'+nazivProzora));
  f := fc.Create(Self);

end
else
  begin
    for j:=0 to screen.FormCount-1 do
    if (screen.Forms[j].ClassName='T'+nazivProzora) then
    begin
      f:=screen.Forms[j];
      f.BringToFront;
        // Exit;
    end;
  end;



for i := 0 to glavnaforma.MDIChildCount - 1 do
begin

  if glavnaforma.MDIChildren[i].Name = nazivProzora then
    begin
    prozoricombo.Text:=glavnaforma.MDIChildren[i].Caption;

    if tab<>-1 then
    for j := 0 to f.ComponentCount - 1 do
      if f.Components[j] is TcxPageControl then
      begin
         TcxPageControl(f.Components[j]).ActivePageIndex := Tab;
         Exit;
      end;


    end;


end;

end;

// mjesto gdje se otvara dijalog za odabir artikala
procedure TsklPrimka.sifraartiklaPropertiesButtonClick(Sender: TObject;
  AButtonIndex: Integer);
begin
glavnaForma.otvoriProzor('dlgArtikli',-1);
[b]dlgArtikli.kojaForma.Caption:='primka'; //error[/b]

end;

//mjesto gdje bi taj dijalog trebao vratiti sifru artikla
procedure TdlgArtikli.cxButton2Click(Sender: TObject);
begin
// if kojaForma.Caption='primka' then
 sklPrimka.sifraartikla.Text:=artiklid.Dataset.fieldbyname('sifra').AsString;


  // else showmessage('0');

 { begin
 if not( Assigned(sklPrimka)) then
 application.CreateForm(TsklPrimka,sklPrimka);
 sklPrimka.show;
[b] sklPrimka.sifraartikla.Text:=artiklid.Dataset.fieldbyname('sifra').AsString; //error [/b] 
  //with sklPrimka.sifraartikla do SendMessage(Handle, WM_CHAR, Word(#13), 0);

 end; }
end;







dlgArtikli.kojaForma.Caption:='primka'; //error
sklPrimka.sifraartikla.Text:=artiklid.Dataset.fieldbyname('sifra').AsString; //error

uvijek mi javlja access violation error
Give me six hours to chop down a tree and I will spend the first four sharpening the axe.
 
Odgovor na temu

Rapaic Rajko
Bgd

Član broj: 4105
Poruke: 810
95.180.19.*



+62 Profil

icon Re: Problem u komunikaciji sa formama...17.08.2012. u 12:36 - pre 142 meseci
Tamo gde kreiras novu formu, u proceduri otvoriProzor, moras explicitno i da joj postavis property f.Name := nazivProzora. Ne mozes da se oslanjas da ce to Delphi da radi za tebe. Zapravo hoce, ali nekom svojom logikom.

Evo sta mislim da se desava. Kad prvi put kreiras formu recimo TdlgArtikli, Delphi ce joj dodeliti ime dlgArtikli. Ali kad je drugi (i svaki sledeci) put budes kreirao, bice to dlgArtikli1, dlgArtikli2 itd. Probaj pa javi jel to to.

Pozz
 
Odgovor na temu

mojeKorIme
BiH

Član broj: 59512
Poruke: 350
31.176.239.*



+1 Profil

icon Re: Problem u komunikaciji sa formama...17.08.2012. u 12:51 - pre 142 meseci
Nije to ;( pokusao sam.. ali nista.. treba li napomenuti da su forme MDI Childern osim ovog dijaloga

Citat:
Rapaic Rajko:
Tamo gde kreiras novu formu, u proceduri otvoriProzor, moras explicitno i da joj postavis property f.Name := nazivProzora. Ne mozes da se oslanjas da ce to Delphi da radi za tebe. Zapravo hoce, ali nekom svojom logikom.

Evo sta mislim da se desava. Kad prvi put kreiras formu recimo TdlgArtikli, Delphi ce joj dodeliti ime dlgArtikli. Ali kad je drugi (i svaki sledeci) put budes kreirao, bice to dlgArtikli1, dlgArtikli2 itd. Probaj pa javi jel to to.

Pozz



[Ovu poruku je menjao mojeKorIme dana 17.08.2012. u 14:06 GMT+1]
Give me six hours to chop down a tree and I will spend the first four sharpening the axe.
 
Odgovor na temu

mojeKorIme
BiH

Član broj: 59512
Poruke: 350
31.176.239.*



+1 Profil

icon Re: Problem u komunikaciji sa formama...17.08.2012. u 14:27 - pre 142 meseci
E ovo radi :)

Code:

procedure TsklPrimka.sifraartiklaPropertiesButtonClick(Sender: TObject;
  AButtonIndex: Integer);
  var x:integer;
      njesto:TcxLabel;
begin
glavnaForma.otvoriProzor('dlgArtikli',-1);
application.ProcessMessages;

for x:=0 to screen.FormCount-1 do
begin
    if (screen.Forms[x].Name='dlgArtikli') then
    if assigned(screen.Forms[x].FindComponent('kojaForma')) then
      njesto :=    screen.Forms[x].FindComponent('kojaForma') as TcxLabel;
      njesto.Caption:='sklPrimka';
end;


end;


procedure TdlgArtikli.cxButton2Click(Sender: TObject);
var x:integer;
      njesto:TcxButtonEdit;
begin


for x:=0 to screen.FormCount-1 do
begin
   
    if (screen.Forms[x].Name=kojaForma.Caption) then
    if assigned(screen.Forms[x].FindComponent('sifraartikla')) then
      njesto :=    screen.Forms[x].FindComponent('sifraartikla') as TcxButtonEdit;
      njesto.Text :=artiklid.Dataset.fieldbyname('sifra').AsString;;
end;



Može se još dotjerati ali ovo je suština ...
Give me six hours to chop down a tree and I will spend the first four sharpening the axe.
 
Odgovor na temu

[es] :: Pascal / Delphi / Kylix :: Problem u komunikaciji sa formama...

[ Pregleda: 1052 | Odgovora: 3 ] > FB > Twit

Postavi temu Odgovori

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