![]() |
Datenbank: MS Access • Version: kA • Zugriff über: ADO
TADODataSet -> Datensatz über Symbol löschen
'loha Folks,
folgende Situation: In einem IWDBGrid werden zusätzlich zu den angezeigten Spalten, Spalten mit Symbolen (auf allen Zeilen ausser der Titelzeile) eingefügt. Diesen Symbolen sollen Funktionen hinterlegt werden, welche den jeweiligen Datensatz betreffen (Delete, Edit, Insert, etc.). Und hier beginnen meine Schwierigkeiten. Mit der folgenden Prozedur wird ein Symbol hinzugefügt, in diesem Fall zum Löschen:
Delphi-Quellcode:
Dem bisher auskommentierten OnClick Ereignis möchte ich folgende Prozedur zuweisen:
procedure TfrmRightManagementSelect.grdLoginUserRenderCell(ACell: TIWGridCell;
const ARow, AColumn: Integer); begin if ARow <> 0 then begin if AColumn = 4 then begin with ACell do begin Control := TIWImageFile.Create(Self); with TIWImageFile(Control) do begin ImageFile.Filename := './delete.gif'; // OnClick := ; end; end; end; end; end;
Delphi-Quellcode:
procedure TfrmRightManagementSelect.grdLoginUserColumns4Click(ASender: TObject;
const AValue: string); begin DataSet.Delete; end;
Delphi-Quellcode:
^^ dies Funktioniert nicht. Die Fehlermeldung beim Kompilieren lautet:
OnClick := grdLoginUserColumns4Click;
[Pascal Fehler] URightManagementSelect.pas(201): E2009 Inkompatible Typen: 'Liste der Parameter ist unterschiedlich' Nun leuchtet dies an und für sich auch noch ein, da das OnClick Ereignis nur den Parameter "Sender: TObject" kennt. Wie kann ich nun über dieses Symbol die Prozedur aufrufen? Den Wert AValue müsste man irgendwie ja noch übergeben...aber irgendwie schnall ich da ab. Grüsse hirnstroem |
Re: TADODataSet -> Datensatz über Symbol löschen
Hallo,
an der Signatur des event handlers kannst du nichts ändern. Speichere den Primärschlüssel des entsprechenden Datensatzes im tag property von TIWImageFile und werte diese property im OnClick() aus. Grüße vom marabu |
Re: TADODataSet -> Datensatz über Symbol löschen
Okay, vielen Dank marabu, gelöscht wird jetzt etwas, leider aber nicht die gewünschte Zeile. Dies kommt daher, dass ich wohl den falschen Index zuweise, nur hat die Borland-Hilfe bisher noch keinen aufschluss bringen können.
Ich versuche den Tag momentan folgendermassen mit dem entsprechenden Index zu versehen:
Delphi-Quellcode:
Tag := DataSet.FieldByName('UserID').AsInteger;
Delphi-Quellcode:
^^ Nun ja, gelöscht wird damit immer nur der erste Datensatz.
Tag := DataSet.RecNo; // hab ich auch schon durch
|
Re: TADODataSet -> Datensatz über Symbol löschen
Guten Morgen.
Da ich keinen ausreichenden Überblick über deinen Quellcode besitze, solltest du mal mit Haltepunkten arbeiten um festzustellen, ob denn auch die richtigen Werte in die tag property geschrieben bzw. aus ihr gelesen werden. Grüße, marabu |
Re: TADODataSet -> Datensatz über Symbol löschen
Jetzt, behaupte ich einmal, funktioniert es.
OnRenderCell wird dies mit der entsprechenden Zeile / Spalte gemacht:
Delphi-Quellcode:
Und die GridDeleteProzedur sieht so aus:
with ACell do
begin Control := TIWImageFile.Create(Self); with TIWImageFile(Control) do begin ImageFile.Filename := './delete.gif'; Hint := 'Datensatz löschen'; Tag := DataSet.RecNo; OnClick := GridDelete; end; end;
Delphi-Quellcode:
An und für sich keine Hexerei -.-
procedure TfrmRightManagementSelect.GridDelete(Sender: TObject);
begin DataSet.First; while DataSet.RecNo <> (Sender as TIWImageFile).Tag do begin DataSet.Next; end; DataSet.Delete; end; Danke nochmals! hirnstroem |
Re: TADODataSet -> Datensatz über Symbol löschen
RecNo ist gut, solange der DataSet nicht zwischendurch geschlossen und neu geöffnet wird. Die Schleife muss übrigens nicht sein:
Delphi-Quellcode:
Grüße, marabu
procedure TfrmRightManagementSelect.GridDelete(Sender: TObject);
begin DataSet.RecNo := (Sender as TIWImageFile).Tag; DataSet.Delete; end; |
Re: TADODataSet -> Datensatz über Symbol löschen
Grml, gleiche Baustelle, anderes Problem.
OnCreate (Form) wird die folgende Prozedur aufgerufen, mit dem eigentlichen Ziel, Symbole zum sortieren einzelner Spalten auf die Titelzeile zu legen:
Delphi-Quellcode:
Leider macht die Prozedur etwas anderes. Es wird zum einen anstatt in die jeweilige Titelzelle, in die darunterliegende erste Datenzelle geschrieben und zum anderen wird keine Eigenschaft "Title" angeboten, mit welcher dann in die Titelzeile geschrieben werden kann.
procedure TfrmDeviceManagementSelect.SetSortSymbols(Sender: TObject);
begin with (grdDevice.Columns.Items[0] as TIWGridCell) do begin Control := TIWImageFile.Create(Self); with TIWImageFile(Control) do begin ImageFile.Filename := './sort_no.gif'; OnClick := SortAddress; end; end; end; Es handelt sich immer noch um IntraWeb Komponenten. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:21 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