Entwickler-Ecke

Grafische Benutzeroberflächen (VCL & FireMonkey) - Panel, durch onclick auf shape, schließen...


BrainChild - Do 07.11.02 16:14
Titel: Panel, durch onclick auf shape, schließen...
hallo erstmal,

zur allgemeinen erklärung:
ich habe eine form mit mehreren panel die visible false sind
und duch onklicks auf shapes auf true gesetzt werden
in jeden panel befindet sich ein shape!

so und nun zum eigentlichen problem!
ich wollte eine procedure namens closepanel schreiben die durch den click auf den shape im panel das panel auf visible false setzt

gedacht hat ich mir das so:

Quelltext
1:
2:
3:
4:
5:
procedure TForm1.closepanel(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
 Tpanel(sender).visible:=false;
end;


ich musste aber sehr schnell einsehen das das so völligr schwachsinn ist da ja der sender ein shape ist!
gibt es eine möglchkeit das panel, durch den shape, konkret zu identifizieren?

danke fürs durchlesen...


LCS - Do 07.11.02 16:26

Hi
hängt davon ab, wie du die Namen vergibst. Wenn du Shape1/Panel1 oder sonst irgendeinen Zusammenhang hast, kannst du mit FindComponent über den Namen das zugehörige Panel ermitteln.
Aber mal dumm gefragt: Wie willst du dann deine unsichtbaren Panels wieder sichtbar kriegen? :roll:

Gruss Lothar


BrainChild - Do 07.11.02 17:12

indem ich visible auf true stelle? zb durchn click aufn shape!

naja zusammenhang nicht direkt:
OptionPanel: TPanel;
OptionAbbrechen: TShape;

das shape befindet sich doch im panel! gibts da nich ne konstante oder ne function um sowas zu ermitteln?


BrainChild - Do 07.11.02 17:34

sollte es keine möglichkeit geben würde es mir auch weiterhelfen wenn du mir sagen kannst ob ich zb.: einer klasse ein wert zuweisen kann
also quasi das ich alle panels visible:=false setzen kann
verstehst!

TPanel(alle).visible:=false; :-)

thx


Tino - Do 07.11.02 18:03

Wenn sich die Komponten Shape immer auf dem jeweiligen Panel befindet könntest Du halt über die Eingeschaft Parent (von Shape) auf das Panel zugreifen.

Gruß
TINO


LCS - Do 07.11.02 18:57

Hi
Tino hat folgendes geschrieben:
Wenn sich die Komponten Shape immer auf dem jeweiligen Panel befindet könntest Du halt über die Eingeschaft Parent (von Shape) auf das Panel zugreifen.

Das wollte ich eigentlich auch zuerst vorschlagen, aber vor nicht allzulanger Zeit hab ich festgestellt, dass die Parent-Eigenschaft immer auf das Formular verweist, wenn die Komponenten zur Entwurfszeit plaziert werden.

LCS hat folgendes geschrieben:

Aber mal dumm gefragt: Wie willst du dann deine unsichtbaren Panels wieder sichtbar kriegen?

Was ich damit meinte ist folgendes: Wenn das Shape auf dem Panel sitzt und das Panel unsichtbar ist, reagiert das Shape auf nicht mehr auf Klicks. Du kannst es also nicht mit einem zweiten Klick wieder sichtbar machen.

Gruss Lothar


BrainChild - Do 07.11.02 21:13

you missunderstand me..

es gibt genug shapes auf der form ansich um das panel wieder sichtbar zu machen:-)

mit der parent fkt hat ich auch schon was im sinn aber die verwirklichung war noch weit weg
du sagtest:
Zitat:
...komponenten zur Entwurfszeit

entwurfszeit=laufzeit???

also das panel is schon vorab in der form definiert!

in wie weit funktioniert das?

habt ihr flei denoch ne idee eine ganze klasse einen wert zuzusweisen? aller TPanel(alle).visible:=false; oder so!


Tino - Do 07.11.02 21:33

LCS hat folgendes geschrieben:
aber vor nicht allzulanger Zeit hab ich festgestellt, dass die Parent-Eigenschaft immer auf das Formular verweist, wenn die Komponenten zur Entwurfszeit plaziert werden.

Das kann ich mir nicht vorstellen. Wenn ich einen Komponente auf ein tPanel plaziere hat diese Komponente das Panel als Parent Eingeschaft. Vielleicht hast Du ja die Owner-Eigenschaft verwendet. Diese Eigenschaft verweist nämlich auf das Form!

Gruß
TINO


BrainChild - Do 07.11.02 21:47

is ja schon das ihr euch untereunander unterhaltet:-)
aber könntet ihr mich auch einweihen! bidde!
thx

flei so? parent.tshape(sender).visible:=false;


BrainChild - Do 07.11.02 21:50

is ja schon das ihr euch untereunander unterhaltet:-)
aber könntet ihr mich auch einweihen! bidde!
thx

flei so? parent.tshape(sender).visible:=false;


BrainChild - Do 07.11.02 22:45

thx für eure mühe!
habs jetz. nur zur information sollte einer auf den beitrag stoßen:


Quelltext
1:
tshape(sender).parent.visible:=false;                    

war die richtige formulierung