![]() |
[ListView] hilfe bei speichern der Items etc.
Hi !
Ich arbeite gerade an einem kleinen HotKey Tool und bin nun an dem Punkt angelangt, andem es darum geht die Einträge in meiner ListView zu speichern. So adde ich Items :
Delphi-Quellcode:
Nun habe ich aber wirklich KEINE Ahnung wie ich diese Items in eine INI bekommen soll...wie ich daten in eine Ini schreibe weiss ich :
procedure TForm1.ImageButton6Click(Sender: TObject);
begin ListView1.Columns.Clear; // Spalten löschen // Spalte 0 erzeugen Spalte := ListView1.Columns.Add; Spalte.Caption := 'Name'; Spalte.Width := 97; // Spalte 1 erzeugen Spalte := ListView1.Columns.Add; Spalte.Caption := 'Aktion'; Spalte.Width := 170; // Spalte 2 erzeugen Spalte := ListView1.Columns.Add; Spalte.Caption := 'Tasten'; Spalte.Width := 100; // Zeile 1 erzeugen Zeile := ListView1.Items.Add; // Neue Zeile Zeile.Caption := Bezeichnung.Text; // Spalte 0 Zeile.SubItems.Add(Typ.Text); // Spalte 1 (Alles ausser Spalte 0 sind SubItems) Zeile.SubItems.Add(Tasten.Text); Tasten.SetFocus; end;
Delphi-Quellcode:
Aber wie gesagt dieser Code speichert einfach irgendwas in die INI..aber ich muss irgendwie diese verschiedenen Spalten dort eintragen !
// HotKeys und Aktionen speichern
procedure WriteSettings(); var ini: TIniFile; begin ini:=TIniFile.create(ExtractFilePath(ParamStr(0))+ 'Settings.ini'); ini.WriteString('HotKey','Aktion','Ausschalten'); ini.free; end; Weiss jemand wie sowas möglich ist ? |
Re: [ListView] hilfe bei speichern der Items etc.
Hallo,
Du könntest einfach die Items des ListView durchlaufen und die Einträge als einzelne Sektionen speichern.
Delphi-Quellcode:
var
i: Integer; Section: String; begin with TIniFile.Create(ChangeFileExt(ParamStr(0), '.ini') do begin for i := 0 to ListView1.Items.Count -1 do begin Section := Format('Zeile_%d', [i]); WriteString(Section, 'Name', ListView1.Items[i].Caption); WriteString(Section, 'Aktion', ListView1.Items[i].SubItems[0]); WriteString(Section, 'Tasten', ListView1.Items[i].subItems[1]); end; Free; end; |
Re: [ListView] hilfe bei speichern der Items etc.
Zitat:
|
Re: [ListView] hilfe bei speichern der Items etc.
Zitat:
wie wärs, wenn du den betreffenden code postest? |
Re: [ListView] hilfe bei speichern der Items etc.
das is der code...sry wenn er lang is aber warscheinlich brauch man den ganzen code um den fehler zu finden.
Delphi-Quellcode:
unit MultiKey_uMain;
interface uses Inifiles, Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, XPMan, ComCtrls, jpeg, ExtCtrls, Menus, ButtonComps, ExtDlgs; type TForm1 = class(TForm) ImageButton1: TImageButton; ImageButton2: TImageButton; ImageButton3: TImageButton; Image1: TImage; Image2: TImage; ImageButton4: TImageButton; ImageButton5: TImageButton; ImageButton6: TImageButton; ImageButton7: TImageButton; ImageButton8: TImageButton; ListView1: TListView; Tasten: TEdit; Bezeichnung: TEdit; Typ: TComboBox; offnen: TEdit; ImageButton9: TImageButton; OpenDialog1: TOpenDialog; procedure ImageButton9Click(Sender: TObject); procedure ImageButton6Click(Sender: TObject); procedure ListView1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean); procedure ImageButton4Click(Sender: TObject); procedure ImageButton2Click(Sender: TObject); procedure ImageButton1Click(Sender: TObject); procedure Image1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); procedure FormDestroy(Sender: TObject); procedure FormCreate(Sender: TObject); private public procedure WMHotKey(var msg: TMessage); message WM_HOTKEY; end; var Form1: TForm1; Spalte : TListColumn; Zeile : TListItem; implementation {$R *.dfm} //HotKeys in Datei speichern procedure WriteSettings(); var i: Integer; Section: String; begin with TIniFile.Create(ChangeFileExt(ParamStr(0), '.ini') do begin for i := 0 to ListView1.Items.Count -1 do begin Section := Format('Zeile_%d', [i]); WriteString(Section, 'Name', ListView1.Items[i].Caption); WriteString(Section, 'Aktion', ListView1.Items[i].SubItems[0]); WriteString(Section, 'Tasten', ListView1.Items[i].subItems[1]); end; Free; end; end; // Auf die HotKeys reagieren procedure TForm1.WMHotKey(var msg: TMessage); begin Case msg.WParam of 01: ShowMessage('F1'); 02: ShowMessage('F2'); end; end; procedure TForm1.FormCreate(Sender: TObject); begin // HotKeys registrieren RegisterHotKey(Handle,01,0,vk_F1); RegisterHotKey(Handle,02,0,vk_F2); end; procedure TForm1.FormDestroy(Sender: TObject); begin // HotKeys wieder freigeben UnregisterHotKey(Handle,01); UnregisterHotKey(Handle,02); end; procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin //Form bzw Image verschiebbar machen ReleaseCapture; Form1.Perform(WM_SYSCOMMAND, $F012, 0); end; procedure TForm1.ImageButton1Click(Sender: TObject); begin Application.Terminate; end; procedure TForm1.ImageButton2Click(Sender: TObject); begin Application.Minimize; end; procedure TForm1.ImageButton4Click(Sender: TObject); begin if Application.MessageBox('Wenn Sie MultiKey beenden, stehen Ihnen die HotKeys nicht mehr zur Verfügung !' + #13 + 'Sind Sie sicher dass sie das Programm beenden wollen?','Information',MB_ICONQUESTION or MB_YESNO) = ID_YES then Application.Terminate; end; procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean); begin if Application.MessageBox('Wenn Sie MultiKey beenden, stehen Ihnen die HotKeys nicht mehr zur Verfügung !' + #13 + 'Sind Sie sicher dass sie das Programm beenden wollen?','Information',MB_ICONQUESTION or MB_YESNO) = ID_YES then CanClose := True else CanClose := False; end; procedure TForm1.ListView1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin TListView(Sender).Selected:=TListView(Sender).GetItemAt(5,Y); end; procedure TForm1.ImageButton6Click(Sender: TObject); begin ListView1.Columns.Clear; // Spalten löschen // Spalte 0 erzeugen Spalte := ListView1.Columns.Add; Spalte.Caption := 'Name'; Spalte.Width := 97; // Spalte 1 erzeugen Spalte := ListView1.Columns.Add; Spalte.Caption := 'Aktion'; Spalte.Width := 170; // Spalte 2 erzeugen Spalte := ListView1.Columns.Add; Spalte.Caption := 'Tasten'; Spalte.Width := 100; // Zeile 1 erzeugen Zeile := ListView1.Items.Add; // Neue Zeile Zeile.Caption := Bezeichnung.Text; // Spalte 0 Zeile.SubItems.Add(Typ.Text); // Spalte 1 (Alles ausser Spalte 0 sind SubItems) Zeile.SubItems.Add(Tasten.Text); Tasten.SetFocus; end; procedure TForm1.ImageButton9Click(Sender: TObject); begin // Datei / Aktion lokalisieren... If OpenDialog1.Execute then begin offnen.Text := OpenDialog1.FileName; end end; end. |
Re: [ListView] hilfe bei speichern der Items etc.
tja, sehr übersichtlich, muss ich schon sagen.
im letzten code-block ist ein end ohne semikolon. mehr habe ich nicht gefunden, bzw. stimmen die zeilenangaben von oben nicht mit denen der dp linenumbers überein. edit: achja, warum deklarierst du die variablen TListItem usw. nicht im enspr. code-block "ImageButton6Click"? |
Re: [ListView] hilfe bei speichern der Items etc.
Zitat:
|
Re: [ListView] hilfe bei speichern der Items etc.
Zitat:
Deine Prozecure WriteSettings(); ist keine Methode deiner TForm1 und darum kannst Du so auch nicht auf Ojbekte dieser Klasse zugreifen. |
Re: [ListView] hilfe bei speichern der Items etc.
doch kann sein, da es keine unter form1 deklarierte prozedur ist.
fügs unter private dazu, und er kennt es. edit: sharky war schneller. |
Re: [ListView] hilfe bei speichern der Items etc.
asoo ok dankeschön,klappt wunderbar !
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:50 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