AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

StringGrid mit internen Button

Ein Thema von WoTo · begonnen am 30. Jan 2006 · letzter Beitrag vom 17. Feb 2006
Antwort Antwort
WoTo

Registriert seit: 28. Jun 2004
Ort: Rotenburg (Wümme)
102 Beiträge
 
Delphi 2005 Enterprise
 
#1

StringGrid mit internen Button

  Alt 30. Jan 2006, 15:43
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 ?
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#2

Re: StringGrid mit internen Button

  Alt 30. Jan 2006, 15:45
Ohne Code gesehen zu haben lässt sich nur ins Blaue raten: Weil der Button nach dem setzen der Property erstellt wird?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
WoTo

Registriert seit: 28. Jun 2004
Ort: Rotenburg (Wümme)
102 Beiträge
 
Delphi 2005 Enterprise
 
#3

Re: StringGrid mit internen Button

  Alt 30. Jan 2006, 17:46
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:
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;
Jetzt müßte der Button im Grid unsichtbar sein !

Der Button hat als Parent den gleichen, wie das StringGrid.
Vielleicht liegt beim Parent der Hund begraben ?

Gruß
Wolfgang
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.116 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: StringGrid mit internen Button

  Alt 30. Jan 2006, 18:05
Moin Wolfgang,

probier doch mal aus, ob es nicht mit einem anschliessenden Invalidate, Repaint, Refresh (jeweils oder) mit dem Button funktioniert.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
WoTo

Registriert seit: 28. Jun 2004
Ort: Rotenburg (Wümme)
102 Beiträge
 
Delphi 2005 Enterprise
 
#5

Re: StringGrid mit internen Button

  Alt 30. Jan 2006, 20:20
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
  Mit Zitat antworten Zitat
WoTo

Registriert seit: 28. Jun 2004
Ort: Rotenburg (Wümme)
102 Beiträge
 
Delphi 2005 Enterprise
 
#6

Re: StringGrid mit internen Button

  Alt 7. Feb 2006, 14:31
Leider hat es mit Invalidate auch nicht geklappt.

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:
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 gleiche Problem habe ich, wenn ich alle Zip-Projekte im StringGrid lösche.

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
Angehängte Dateien
Dateityp: zip stringgridex_619.zip (56,3 KB, 15x aufgerufen)
Dateityp: zip mrzip_185.zip (287,2 KB, 10x aufgerufen)
  Mit Zitat antworten Zitat
WoTo

Registriert seit: 28. Jun 2004
Ort: Rotenburg (Wümme)
102 Beiträge
 
Delphi 2005 Enterprise
 
#7

Re: StringGrid mit internen Button

  Alt 17. Feb 2006, 13:12
Hat denn keiner irgendeine Idee ?

Gruß
Woto
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:56 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