AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi TADODataSet -> Datensatz über Symbol löschen
Thema durchsuchen
Ansicht
Themen-Optionen

TADODataSet -> Datensatz über Symbol löschen

Ein Thema von hirnstroem · begonnen am 3. Okt 2006 · letzter Beitrag vom 5. Okt 2006
Antwort Antwort
hirnstroem

Registriert seit: 21. Sep 2005
297 Beiträge
 
Delphi 2006 Professional
 
#1

TADODataSet -> Datensatz über Symbol löschen

  Alt 3. Okt 2006, 13:24
Datenbank: MS Access • Version: kA • Zugriff über: ADO
'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:
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;
Dem bisher auskommentierten OnClick Ereignis möchte ich folgende Prozedur zuweisen:

Delphi-Quellcode:
procedure TfrmRightManagementSelect.grdLoginUserColumns4Click(ASender: TObject;
  const AValue: string);
begin
  DataSet.Delete;
end;
OnClick := grdLoginUserColumns4Click; ^^ dies Funktioniert nicht. Die Fehlermeldung beim Kompilieren lautet:
[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
inde deus abest
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#2

Re: TADODataSet -> Datensatz über Symbol löschen

  Alt 3. Okt 2006, 14:26
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
  Mit Zitat antworten Zitat
hirnstroem

Registriert seit: 21. Sep 2005
297 Beiträge
 
Delphi 2006 Professional
 
#3

Re: TADODataSet -> Datensatz über Symbol löschen

  Alt 4. Okt 2006, 07:41
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:

Tag := DataSet.FieldByName('UserID').AsInteger; Tag := DataSet.RecNo; // hab ich auch schon durch ^^ Nun ja, gelöscht wird damit immer nur der erste Datensatz.
inde deus abest
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#4

Re: TADODataSet -> Datensatz über Symbol löschen

  Alt 4. Okt 2006, 07:57
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
  Mit Zitat antworten Zitat
hirnstroem

Registriert seit: 21. Sep 2005
297 Beiträge
 
Delphi 2006 Professional
 
#5

Re: TADODataSet -> Datensatz über Symbol löschen

  Alt 4. Okt 2006, 08:30
Jetzt, behaupte ich einmal, funktioniert es.

OnRenderCell wird dies mit der entsprechenden Zeile / Spalte gemacht:

Delphi-Quellcode:
  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;
Und die GridDeleteProzedur sieht so aus:

Delphi-Quellcode:
procedure TfrmRightManagementSelect.GridDelete(Sender: TObject);
begin
  DataSet.First;
  while DataSet.RecNo <> (Sender as TIWImageFile).Tag do
  begin
    DataSet.Next;
  end;
  DataSet.Delete;
end;
An und für sich keine Hexerei -.-

Danke nochmals!
hirnstroem
inde deus abest
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#6

Re: TADODataSet -> Datensatz über Symbol löschen

  Alt 4. Okt 2006, 08:39
RecNo ist gut, solange der DataSet nicht zwischendurch geschlossen und neu geöffnet wird. Die Schleife muss übrigens nicht sein:

Delphi-Quellcode:
procedure TfrmRightManagementSelect.GridDelete(Sender: TObject);
begin
  DataSet.RecNo := (Sender as TIWImageFile).Tag;
  DataSet.Delete;
end;
Grüße, marabu
  Mit Zitat antworten Zitat
hirnstroem

Registriert seit: 21. Sep 2005
297 Beiträge
 
Delphi 2006 Professional
 
#7

Re: TADODataSet -> Datensatz über Symbol löschen

  Alt 5. Okt 2006, 08:28
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:
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;
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.

Es handelt sich immer noch um IntraWeb Komponenten.
inde deus abest
  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 23:15 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