![]() |
Combobox in der Zelle eines Stringgrids
Hi :hi:
Mich würde mal interessieren, ob und wenn ja wie man eine Combobox in einer Zelle eines Stringgrids/Drawgrids reinbekommt, so dass man in einer Zelle eben nicht nur Text eingeben kann, sondern zwischen verschiedenen Vorgabewerten wählen kann. Muss man das Zeichnen selber übernehmen und die Klicks auf das Grid abfangen und auswerten? oder kann man die Delphi-Komponete (TCombobox) benutzen? |
Re: Combobox in der Zelle eines Stringgrids
Hi Flo,
einfach mal suchen, das wurde schon durchgekaut. |
Re: Combobox in der Zelle eines Stringgrids
Liste der Anhänge anzeigen (Anzahl: 1)
Das sollte dir weiter helfen...:)
|
Re: Combobox in der Zelle eines Stringgrids
Wow! Vielen Dank! :party:
|
Re: Combobox in der Zelle eines Stringgrids
Ich hab mir jetzt aus den verschiedenen Threads folgendes zusammengebaut (Die meisten wahren ja zum DBGrid + Checkbox). Weil es bei mir viel kürzer geworden ist, als bei den meisten Beispielen wüsste ich gerne ob ich nicht irgendwas wichtiges vergessen hab.
Delphi-Quellcode:
function TStringGridEx.AddComboBox(aCol, aRow: Integer): TComboBox;
var Rect: TRect; begin Result := TComboBox.Create(Owner); Objects[aCol, aRow] := Result; Result.Parent := Parent; Result.Color := clWindow; Rect := CellRect(aCol, aRow); Result.Left := Left + Rect.Left +2; Result.Top := Top + Rect.Top +2; Result.Width := Rect.Right - Rect.Left; Result.Height := Rect.Bottom - Rect.Top; end; |
Re: Combobox in der Zelle eines Stringgrids
Hi!
Irgendwie stehe ich ein bisschen auf dem Schlauch... Wie bekommt man die Funktion TStringGridEx.AddComboBox(aCol, aRow: Integer): TComboBox; zum Laufen? Ich erhalte immer einen ganzen Schwanz von Fehlermeldungen beim Compilieren:
Code:
Kann mir jemand zumindest den ersten Fehler "Funktion benötigt Ergebnistyp" erklären? Ich habe die Funktion einfach einmal in meien Unit kopiert, die Units Grids und StdCtrls sind auch in der Uses-Clause drin...
[Fehler] Unit1.pas(27): Funktion benötigt Ergebnistyp
[Fehler] Unit1.pas(30): Undefinierter Bezeichner: 'Owner' [Fehler] Unit1.pas(31): Undefinierter Bezeichner: 'Objects' [Fehler] Unit1.pas(31): Undefinierter Bezeichner: 'aRow' [Fehler] Unit1.pas(32): Operator oder Semikolon fehlt [Fehler] Unit1.pas(33): Operator oder Semikolon fehlt [Fehler] Unit1.pas(34): Undefinierter Bezeichner: 'CellRect' [Fehler] Unit1.pas(35): Operator oder Semikolon fehlt [Fehler] Unit1.pas(36): Operator oder Semikolon fehlt [Fehler] Unit1.pas(37): Operator oder Semikolon fehlt [Fehler] Unit1.pas(38): Operator oder Semikolon fehlt Vielen Dank im Voraus! Mamphil |
Re: Combobox in der Zelle eines Stringgrids
Moin Mamphil,
ich denke mal, dass Du Dir keine Klasse TStringGridEx erstellt hast. Bei AddComboBox handelt es sich nicht um einen einzeln nutzbare Funktion, sondern eine Methode der oben genannten Klasse. |
Re: Combobox in der Zelle eines Stringgrids
Hi!
:wall: Danke für den dezenten Hinweis. Es muss also das folgende im interface-Abschnitt stehen:
Delphi-Quellcode:
Auf die leeren private- und public-Abschnitte kann aber doch verzichtet werden?
type
TStringGridEx = class(TStringGrid) function AddComboBox(aCol, aRow: Integer): TComboBox; private { Private-Deklarationen } public { Public-Deklarationen } end; [EDIT] Gibt es eigentlich eine Möglichkeit ein TStringGrid in ein TStringGridEx umzuwandeln oder muss man das TStringGridEx immer zur Laufzeit erstellen? [/EDIT] Vielen Dank für die Hilfe! Mamphil |
Re: Combobox in der Zelle eines Stringgrids
Moin Mamphil,
klar kannst Du die nicht benötigten Abschnitte weglassen. Zitat:
Delphi-Quellcode:
im interface-Abschnitt
procedure Register;
die dann, z.B. so aussehen kann.
Delphi-Quellcode:
Die Unit kommt dann, z.B., in das Delphi\Lib-Verzeichnis, und kann dann einem Package zugefügt werden, dass Du installierst.
procedure Register;
begin RegisterComponents('Meine Kompos', [TStringGridEx]); end; Wenn Du es noch besonders "nett" machen willst machst Du Dir eine DCR-Datei (Delphi-Bildeditor), um ein eigenes Icon für die Kompo zu haben. |
Re: Combobox in der Zelle eines Stringgrids
Hi!
Vielen Dank für die sehr ausführliche Antwort! Ich werd mal sehen, was ich damit machen kann... Mamphil |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:03 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