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;
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.