![]() |
StringGrid mit internen Button
Hallo zusammen,
ich habe mir eine neue Klasse geschrieben, die von TStringGrid abgeleitet ist. Die neue Klasse (TStringGridEx) besitzt die Möglichkeit in einer bestimmten Zelle einen Button zu plazieren. Über eine weitere Methode kann man sich den Button dann als Objekt übergeben lassen. Setzt man dann das Enable-Property auf false, so wird der Button im StringGrid auch disabled angezeigt. Wenn ich allerdings das Visible-Property auf false setze, passiert nichts. Der Button wird weiterhin dargestellt und genau das ist mein Problem. Warum wird der Button trotzdem dargestellt, obwohl Visible:=false ist ? |
Re: StringGrid mit internen Button
Ohne Code gesehen zu haben lässt sich nur ins Blaue raten: Weil der Button nach dem setzen der Property erstellt wird?
|
Re: StringGrid mit internen Button
Hallo Michael,
das StringGrid führt intern eine ObjektListe mit allen Objekten, die im StringGrid verwendet werden. Nun kann ich mir den Button einer Zelle geben lassen, in etwa so:
Delphi-Quellcode:
Jetzt müßte der Button im Grid unsichtbar sein !
procedure SetButton(ARow,ACol : integer);
var AButton : TButton; begin if StringGridEx1.GetObject(ARow,ACol) is TButton then begin AButton := StringGridEx1.GetObject(ARow,ACol) as TButton; AButton.Visible := false; end; end; Der Button hat als Parent den gleichen, wie das StringGrid. Vielleicht liegt beim Parent der Hund begraben ? Gruß Wolfgang |
Re: StringGrid mit internen Button
Moin Wolfgang,
probier doch mal aus, ob es nicht mit einem anschliessenden Invalidate, Repaint, Refresh (jeweils oder) mit dem Button funktioniert. |
Re: StringGrid mit internen Button
Hallo Christian,
mit Repaint oder Refresh hatte ich es schon versucht. Mit Invalidate jedoch noch nicht, werde dies noch machen und berichten. Wird aber wahrscheinlich erst am Freitag etwas werden. Bis dahin, viele gute Ideen ! Wolfgang |
Re: StringGrid mit internen Button
Liste der Anhänge anzeigen (Anzahl: 2)
Leider hat es mit Invalidate auch nicht geklappt. :wall:
Ich habe nun das gesamte Projekt mal als Anhang zum Download bereitgestellt. Das Projekt benötigt eine selbstgeschriebene Komponente TStringGridEx, die auch im Anhang enthalten ist. In der folgenden Procedure setzte ich zur Probe das Visible-Property des Buttons auf false. Nun dürfte der Button nicht mehr dargestellt werden:
Delphi-Quellcode:
Das gleiche Problem habe ich, wenn ich alle Zip-Projekte im StringGrid lösche.
procedure TForm1.sgZipProjectCBClick(ACheckBox: TGridCheckBoxExt; ACol,
ARow: Integer); var ABT : TGridButton; begin ABT := sgZipProject.Button[4,ARow]; if ABT <> Nil then if ACheckBox.Checked then ABT.Enabled := true else begin ABT.Enabled := false; ABT.Visible := false; end; end; Das Programm soll später einmal in der Lage sein, verschiedene Zip-Projekte manuell oder nach Zeit auszuführen. Die Zip-Projekte beinhalten Zip-Jobs, die wiederum alle Dateien enthalten, die gepackt werden sollen. Dadurch ist es möglich, einfach und schnell alle Dateien eines Projektes zum Feierabend zu packen ohne sich jedesmal zu fragen, ob jetzt wirklich alle benötigten Dateien im Ziparchive enthalten sind. Gruß, Woto |
Re: StringGrid mit internen Button
Hat denn keiner irgendeine Idee ? :gruebel:
Gruß Woto |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:14 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-2025 by Thomas Breitkreuz