Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 3 odgovora
  • 1.524 pregleda

Najnovija ↓

Problem u komunikaciji sa formama... 17.08.2012. u 10:40 · pre 172 meseca #1
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
Potpis
Give me six hours to chop down a tree and I will spend the first four sharpening the axe.
Re: Problem u komunikaciji sa formama... 17.08.2012. u 13:36 · pre 172 meseca #2
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
Re: Problem u komunikaciji sa formama... 17.08.2012. u 13:51 · pre 172 meseca
izmenjeno 1 put, poslednji put mojeKorIme 17.08.2012. u 14:06
  1. mojeKorIme17.08.2012. u 14:06zapis iz teksta poruke
#3
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
Potpis
Give me six hours to chop down a tree and I will spend the first four sharpening the axe.
Re: Problem u komunikaciji sa formama... 17.08.2012. u 15:27 · pre 172 meseca #4
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 ...
Potpis
Give me six hours to chop down a tree and I will spend the first four sharpening the axe.
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme