Entwickler-Ecke
Grafische Benutzeroberflächen (VCL & FireMonkey) - Title Buttons wie funktionieren diese?
Arne Danikowski - Mo 05.01.09 17:13
Titel: Title Buttons wie funktionieren diese?
Ich zeige Daten einer Tabelle in einem DBGRID da. (Ich verwende immer noch die RX Tools also rxdbgrid).
Bei einem RXGrid kann man die TitelButtons auf True stellen. Wie kann ich diesen Buttons nun Funktionen zuordnen?
Kennt sich jemand damit aus?
Moderiert von
Narses: Topic aus Delphi Language (Object-Pascal) / CLX verschoben am Mo 05.01.2009 um 18:14
jaenicke - Mo 05.01.09 17:32
Ich habe eine alte Version und die auch nicht installiert, aber auf den ersten Blick würde ich sagen, dass dafür OnTitleBtnClick gedacht ist. Es hört sich ja zumindest danach an.
Zitat: |
Delphi-Quelltext 1: 2: 3:
| type TTitleClickEvent = procedure (Sender: TObject; ACol: Longint; Field: TField) of object; | |
Und wie du siehst wird auch die Spalte übergeben.
Arne Danikowski - Mo 05.01.09 17:51
Da habe ích auch schon versucht mit "rumzubasteln" :)
Hast Du da noch ein altes Beispiel?
Ich möchte zum Beispiel die Tabelle nach einem Klick auf den entsprechenden TitleButton sortieren (ORDER BY) Dazu müsste ich allerdings wissen, welcher TitleButton
Die Prozedur sieht glaub ich dann so aus
Delphi-Quelltext
1: 2: 3: 4:
| procedure TForm2.RxDBGrid1TitleBtnClick(Sender: TObject; ACol: Integer; Field: TField); begin end; |
Ich habe mir das folgendes zusammengereimt:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15:
| procedure TForm2.RxDBGrid1TitleBtnClick(Sender: TObject; ACol: Integer; Field: TField); Var Z:Integer; begin with DM.JPQuery do
begin close; SQL.Clear; SQL.Add('Select *'); SQL.Add('FROM JP'); SQL.Add('ORDER BY'+RxDBGrid1.Columns[Z].FieldName); open; end; end; |
Bekomme nun ein Fehlermeldung beim Betätigen eines TitleButtons
"Listenindex überschreitet das Maximum(532)"
jaenicke - Mo 05.01.09 19:44
Du weist Z ja auch keinen Wert zu. Und genau das sagt dir auch der Compiler. Achte doch einfach mal auf die Hinweise und Warnungen, die dir dort angezeigt werden.
In diesem Fall wird da stehen, dass z nicht initialisiert ist.
Und wozu auch eine neue Variable? Die Spalte steht ja schon in ACol drin vermute ich.
Arne Danikowski - Di 06.01.09 15:34
Ich hatte eine Zeile vergessen. Hatte da noch Z:=ACol stehen. Funktionierte aber auch nicht. Die Spaltennummer steht in Acol drin,
habe die Prozedur mal so gestaltet:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13:
| procedure TForm2.RxDBGrid1TitleBtnClick(Sender: TObject; ACol: Integer; Field: TField); VAR FELD:STRING; begin Feld:=RxDBGrid1.Columns[ACol].FieldName; with DM.JPQuery do begin close; SQL.Clear; SQL.TEXT:=('Select * FROM JP ORDER BY' +Feld); open; end; end; |
Nun bekomme ich einen Syntexfehler in der ORDER BY Klausel. In der Variablen FELD wird der Spaltenname übernommen.
Kann also nur noch was mit der SQL Abfrage sein.
jaenicke - Di 06.01.09 15:36
Kann es sein, dass nach dem BY ein Leerzeichen fehlt? ;-)
Zudem kannst du dir das Clear denke ich sparen, weil du danach mit Text vermute ich ohnehin alles überschreibst in SQL.
Arne Danikowski - Di 06.01.09 15:42
Jep das fehlt. Schande über mein Haupt :oops:
Stimmt das Clear kann ich mir so sparen. war nur zum testen bau das nun wieder auf add um.
Danke für Deine Hilfe.
jaenicke - Di 06.01.09 15:54
Arne Danikowski hat folgendes geschrieben : |
Stimmt das Clear kann ich mir so sparen. war nur zum testen bau das nun wieder auf add um. |
Das dauert allerdings ein ganz klein wenig länger. Solange das nicht in einer Schleife passiert ist das ja nicht so wichtig, aber solltest du das einmal in einer (oft ausgeführten) Schleife benutzen, dann sollte dir klar sein, dass mehrere Add-Anweisungen langsamer sind als eine Zeile mit Zuweisung von Text.
(Bei komplizierteren oder zusammengesetzten Anweisungen ist das natürlich etwas anderes ggf., wenn z.B. die Übersicht ohne mehrere Adds leidet.)
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!