Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi TToolbutton visible (https://www.delphipraxis.net/97024-ttoolbutton-visible.html)

_frank_ 3. Aug 2007 02:58


TToolbutton visible
 
Hi,
ich habe mir eine Checklistbox gebastelt um die Buttons einer Toolbar ein- und ausblenden zu können. Das Ausblenden funktioniert auch super...nur einblenden tut er nicht (keine Fehlermeldung).

mein Code:

Delphi-Quellcode:
procedure TForm_DFMOptions.CheckListBox1ClickCheck(Sender: TObject);
var i:integer;
    c:TControl;
begin
  for i:=0 to checklistbox1.Items.count-1 do
  begin
    c:=Form_DFMMain.FindComponent(Checklistbox1.items.strings[i]) as TControl;
    if assigned(c) then
    begin
      c.Visible:=Checklistbox1.Checked[i]; //show if hidden isn't working
    end else
      showmessage('not assigned');
  end;
end;
habe auch schon mit (c as TToolbutton).Show, (c as TToolbutton).Parent und Form_DFMMain.Toolbar1.Update rumgespielt, jedoch ohne Erfolg...einmal ausgeblendet ist der button weg :(

vielleicht hat jemand eine Idee...

Gruß Frank

chrisw 3. Aug 2007 07:40

Re: TToolbutton visible
 
Du setzt das visible immer auf das letzte Item deiner CheckListBox;

Versuch mal :
Delphi-Quellcode:
c.Visible:=Checklistbox1.Checked[CheckListBox1.Items.IndexOf(c.name)]; //show if hidden isn't working
//statt
 c.Visible:=Checklistbox1.Checked[i]; //show if hidden isn't working

_frank_ 3. Aug 2007 12:28

Re: TToolbutton visible
 
Zitat:

Zitat von chrisw
Du setzt das visible immer auf das letzte Item deiner CheckListBox;

versteh ich nicht...greife doch auf checked[i] zu...
Zitat:

Zitat von chrisw
Versuch mal :
Delphi-Quellcode:
c.Visible:=Checklistbox1.Checked[CheckListBox1.Items.IndexOf(c.name)]; //show if hidden isn't working
//statt
 c.Visible:=Checklistbox1.Checked[i]; //show if hidden isn't working

erwartungsgemäß funktioniert das auch nicht...ich habe die checklistbox dynamisch gefüllt (alle buttons der toolbar eingelesen), somit ist auch der index der gleiche.
versteckt wird der button ja...

Gruß Frank

marabu 3. Aug 2007 13:13

Re: TToolbutton visible
 
Hallo Frank,

bei mir funktioniert es so:

Delphi-Quellcode:
procedure TDemoForm.CheckListBoxClickCheck(Sender: TObject);
begin
  with Sender as TCheckListBox do
    with self.FindComponent(Items[ItemIndex]) as TControl do
      Visible := Checked[ItemIndex];
end;
Grüße vom marabu

_frank_ 3. Aug 2007 13:22

Re: TToolbutton visible
 
verstecken geht, nur wieder anzeigen genauso wenig :(
ist wohl ein unentdeckter Bug in D3...muss ich wohl doch die forms neu erstellen, um die buttons wieder einzublenden...

Gruß Frank

marabu 3. Aug 2007 15:03

Re: TToolbutton visible
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo Frank,

hast du es auch außerhalb deiner Anwendung getestet?
Gibt es Updates für D3, die du nicht installiert hast?

Ich konnte nur mit D5 und D7 testen - da funktioniert es.

Freundliche Grüße

_frank_ 3. Aug 2007 16:21

Re: TToolbutton visible
 
Danke Marabu
mhm...hab das MR2 (dürfte das aktuellste sein) nochmal drübergebügelt...trotzdem noch selbes Phänomen auch mit deiner Testanwendung.

habs erstmal durch ein recreate gelöst...

Gruß Frank


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

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