Delphi-PRAXiS
Seite 2 von 4     12 34      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi StringGrid Zeile per Mausclick auslesen (https://www.delphipraxis.net/121427-stringgrid-zeile-per-mausclick-auslesen.html)

DeddyH 28. Sep 2008 16:07

Re: StringGrid Zeile per Mausclick auslesen
 
Und das soll ja so sein, oder? Nun soll diese entsprechende Zeile gelöscht werden?

klausmaus 28. Sep 2008 16:13

Re: StringGrid Zeile per Mausclick auslesen
 
korrekt.
Zur Info: Soll als Beleg zum Thema Dateiarbeit ein Proggi schreiben.
Da ich Chemielehrer bin, versuch ich eine Chemikalienverwaltung (Zu- und Abgänge; Bestand). Da es ja mal passieren kann, dass eine Chemikale nicht mehr verwendet wird oder Fehleingaben passieren, soll dieser Datensatz gelöscht werden können.

DeddyH 28. Sep 2008 16:17

Re: StringGrid Zeile per Mausclick auslesen
 
Dann versuch es mal ganz simpel mit
Delphi-Quellcode:
StringGrid.Rows.Delete(StringGrid.Row);
Sollte eigentlich so funktionieren, hab ich aber nicht ausprobiert, ich mache zu wenig mit StringGrid.

klausmaus 28. Sep 2008 16:23

Re: StringGrid Zeile per Mausclick auslesen
 
Danke für den Tipp.
Melde mich Dienstag abend mit dem Ergebnis.

Schönen Sonntag noch.

toms 28. Sep 2008 16:27

Re: StringGrid Zeile per Mausclick auslesen
 
Zitat:

Zitat von DeddyH
Dann versuch es mal ganz simpel mit
Delphi-Quellcode:
StringGrid.Rows.Delete(StringGrid.Row);
Sollte eigentlich so funktionieren, hab ich aber nicht ausprobiert, ich mache zu wenig mit StringGrid.

Funktioniert nicht.

Delphi-Quellcode:
type
  TMyStringGrid = class(TStringGrid);

procedure TForm1.Button1Click(Sender: TObject);
begin
  TMyStringGrid(StringGrid1).DeleteRow(ZeilenIndex);
end;

DeddyH 28. Sep 2008 16:38

Re: StringGrid Zeile per Mausclick auslesen
 
Dann eben so ;)

klausmaus 1. Okt 2008 13:47

Re: StringGrid Zeile per Mausclick auslesen
 
Hat etwas länger gedauert.
Zunächst mal danke für die Tipps. Als ich am Basteln war stellte ich fest:
Fehler in der Denke!
Ich mache Folgendes:
-Edits auslesen
-Datensätze in Datei schreiben
-anschließend wieder auslesen und im StringGrid ausgeben
Ergo: Durch Löschen im StringGrid ändert sich ja nichts am Dateiinhalt. Da ich nicht alles ummodeln wollte bin ich auf folg. Prozedur gekommen:
Delphi-Quellcode:
procedure TForm1.DatenLoeschenClick(Sender: TObject);
  var i:SmallInt;
  begin
  seek(ChemDat,0);
  Assignfile(ChemDatH,'Hilf');
  rewrite(ChemDatH);
  for i:=0 to Stelle-1 do
    begin
     read(ChemDat,Chem) ;
     write(ChemDatH,Chem);
     end;
     seek(ChemDat,Stelle+1);
    while not eof (Chemdat) do
    begin
    read(ChemDat,Chem);
    write(ChemDatH,Chem);
    end;
    // bis hierhin klappts
    seek(ChemDat,0) ;
    seek(ChemDatH,0);
    begin
    read(ChemDatH,Chem);
    write(ChemDat,Chem);
    closefile(ChemDatH);
    end;

  end;
Funktioniert auch fast. Datensatz wird gelöscht. In der "Hilfsdatei" ChemDatH fehlt dann der gelöschte Datensatz.
Mit der den letzten Read/Write-Befehlen will ich die aktualisierten Daten wieder in die Ursprungsdatei schreiben. Das tuts aber nicht. Weshalb?
2.Frage: Wie krieg ich die "Hilfsdatei" wieder gelöscht?
3.Frage: Mir scheint das Hin-und Herschreiben etwas umständlich zu sein. Gibts eine elegante Variante?

taaktaak 1. Okt 2008 14:21

Re: StringGrid Zeile per Mausclick auslesen
 
Moin, Moin.
Nun, vielleicht nicht 2x kopieren, sondern die Originaldatei nach dem ersten Kopieren löschen und die Hilfsdatei umbenennen. Also DeleteFile() und RenameFile() verwenden.

// edit: Buchstabendreher, da muss man bei einem Lehrer ja aufpassen :shock:

klausmaus 1. Okt 2008 14:32

Re: StringGrid Zeile per Mausclick auslesen
 
Muss nachfragen: Du meinst folgendes:
-ChemDat (hat alte Daten) CloseFile und dann DeleteFile
anschließend
-ChemDatH (hat neue Daten) Closefile und dann Rename und dann Assignfile (brauch sie ja wieder geöffnet)?

//bin kein Krümelkacker :lol:

taaktaak 1. Okt 2008 14:33

Re: StringGrid Zeile per Mausclick auslesen
 
Jooo :thumb:


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:25 Uhr.
Seite 2 von 4     12 34      

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