![]() |
Re: StringGrid Zeile per Mausclick auslesen
Und das soll ja so sein, oder? Nun soll diese entsprechende Zeile gelöscht werden?
|
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. |
Re: StringGrid Zeile per Mausclick auslesen
Dann versuch es mal ganz simpel mit
Delphi-Quellcode:
Sollte eigentlich so funktionieren, hab ich aber nicht ausprobiert, ich mache zu wenig mit StringGrid.
StringGrid.Rows.Delete(StringGrid.Row);
|
Re: StringGrid Zeile per Mausclick auslesen
Danke für den Tipp.
Melde mich Dienstag abend mit dem Ergebnis. Schönen Sonntag noch. |
Re: StringGrid Zeile per Mausclick auslesen
Zitat:
Delphi-Quellcode:
type
TMyStringGrid = class(TStringGrid); procedure TForm1.Button1Click(Sender: TObject); begin TMyStringGrid(StringGrid1).DeleteRow(ZeilenIndex); end; |
Re: StringGrid Zeile per Mausclick auslesen
Dann eben so ;)
|
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:
Funktioniert auch fast. Datensatz wird gelöscht. In der "Hilfsdatei" ChemDatH fehlt dann der gelöschte Datensatz.
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; 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? |
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: |
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: |
Re: StringGrid Zeile per Mausclick auslesen
Jooo :thumb:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:25 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