Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Frame visible und invisible (https://www.delphipraxis.net/94357-frame-visible-und-invisible.html)

P4CM4N 20. Jun 2007 13:33


Frame visible und invisible
 
Hi, ich hab folgendes Problem:

Delphi-Quellcode:
procedure TForm1.Button3Click(Sender: TObject);
var spio: TFrame2;
begin
if c=0 then
begin
spio:=TFrame2.create(Form1);                     //Frame ins Form einbinden
spio.Parent:=Form1;
spio.Top:=32;
spio.Left:=750;
spio.Show;
c:=1;
end
else
Spio.visible:=true;
end;
Mit diesem Code möchte ich, dass beim Buttonclick3 das Frame eingebunden wird. Dann habe ich auf dem Frame einen Button, mit dem das Frame wieder unsichtbar wird. Klicke ich jetzt wieder auf Button3 soll das Frame wieder sichtbar werden. Das funzt aber nicht. Wieso?

Danke

SirThornberry 20. Jun 2007 13:54

Re: Frame visible und invisible
 
Das geht nicht weil Spio eine lokale Variable ist die nach Verlassen deines Klickereignisses wieder undefniert ist. Beim nächsten Buttonklick ist also die vorherige Instanz nicht mehr zugewiesen, kann also nicht mehr über diese Variable angesprochen werden und später auch nicht frei gegeben werden.

Im übrigen geht es auch so (was den vorteil hat das du den Frame bei Programmende auch wieder freigeben kannst):
Delphi-Quellcode:
private
  spio: TFrame2;
[...]
procedure TForm1.Button3Click(Sender: TObject);
begin
  if (spio = nil) then //Alternativ auch: if not(Assigned(spio)) then
  begin
    spio:=TFrame2.create(Form1);                     //Frame ins Form einbinden
    spio.Parent:=Form1;
    spio.Top:=32;
    spio.Left:=750;
    spio.Show;
  end
  else
    Spio.visible:=true;
end;

P4CM4N 20. Jun 2007 14:27

Re: Frame visible und invisible
 
Hi, erstmal danke für die Hilfe. Nun hab ich spio:Tframe2; unter private eingefügt.
Doch kommt jetzt diese Fehlermeldung:

[Error] Unit1.pas(30): Undeclared identifier: 'TFrame2'

Wo soll ich TFrame2 noch deklarieren?

SirThornberry 20. Jun 2007 14:35

Re: Frame visible und invisible
 
Du musst deine Unit zu den uses hinzufügen.
Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, [...], DEINEUNIT; //<- Hier muss es hinn

type
  TForm1 = class(TForm)
    [...]
  private
    spio: TFrame2;
    [...]
  end;

implementation

uses DEINEUNIT; //<- Hier hast du es zur Zeit vermutlich stehen

{$R *.dfm}

P4CM4N 20. Jun 2007 16:51

Re: Frame visible und invisible
 
Jaaa, es funzt. Thx


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:42 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz