AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi [ListView] hilfe bei speichern der Items etc.
Thema durchsuchen
Ansicht
Themen-Optionen

[ListView] hilfe bei speichern der Items etc.

Ein Thema von Assun · begonnen am 29. Dez 2005 · letzter Beitrag vom 29. Dez 2005
Antwort Antwort
Benutzerbild von Assun
Assun

Registriert seit: 3. Feb 2005
Ort: Hilzingen am Bodensee
469 Beiträge
 
Delphi 2005 Personal
 
#1

[ListView] hilfe bei speichern der Items etc.

  Alt 29. Dez 2005, 16:44
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:
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;
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 :

Delphi-Quellcode:
// 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;
Aber wie gesagt dieser Code speichert einfach irgendwas in die INI..aber ich muss irgendwie diese verschiedenen Spalten dort eintragen !

Weiss jemand wie sowas möglich ist ?
Sebastian Dietrich
http://Assun.de - bald komplett überarbeitet
  Mit Zitat antworten Zitat
s14

Registriert seit: 15. Mai 2003
Ort: München
251 Beiträge
 
Delphi 7 Architect
 
#2

Re: [ListView] hilfe bei speichern der Items etc.

  Alt 29. Dez 2005, 17:08
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;
  Mit Zitat antworten Zitat
Benutzerbild von Assun
Assun

Registriert seit: 3. Feb 2005
Ort: Hilzingen am Bodensee
469 Beiträge
 
Delphi 2005 Personal
 
#3

Re: [ListView] hilfe bei speichern der Items etc.

  Alt 29. Dez 2005, 17:45
Zitat:
[Fehler] MultiKey_uMain.pas(165): E2029 ')' erwartet, aber 'DO' gefunden
[Fehler] MultiKey_uMain.pas(177): E2029 ';' erwartet, aber '.' gefunden
[Fehler] MultiKey_uMain.pas(179): E2029 Deklaration erwartet, aber Dateiende gefunden
das bringt er mir als error
Sebastian Dietrich
http://Assun.de - bald komplett überarbeitet
  Mit Zitat antworten Zitat
Benutzerbild von dahead
dahead

Registriert seit: 16. Mai 2005
620 Beiträge
 
#4

Re: [ListView] hilfe bei speichern der Items etc.

  Alt 29. Dez 2005, 17:49
Zitat von Assun:
Zitat:
[Fehler] MultiKey_uMain.pas(165): E2029 ')' erwartet, aber 'DO' gefunden
[Fehler] MultiKey_uMain.pas(177): E2029 ';' erwartet, aber '.' gefunden
[Fehler] MultiKey_uMain.pas(179): E2029 Deklaration erwartet, aber Dateiende gefunden
das bringt er mir als error :shock:
dann weisst du ja, was du zu tun hast.

wie wärs, wenn du den betreffenden code postest?
  Mit Zitat antworten Zitat
Benutzerbild von Assun
Assun

Registriert seit: 3. Feb 2005
Ort: Hilzingen am Bodensee
469 Beiträge
 
Delphi 2005 Personal
 
#5

Re: [ListView] hilfe bei speichern der Items etc.

  Alt 29. Dez 2005, 17:52
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.
Sebastian Dietrich
http://Assun.de - bald komplett überarbeitet
  Mit Zitat antworten Zitat
Benutzerbild von dahead
dahead

Registriert seit: 16. Mai 2005
620 Beiträge
 
#6

Re: [ListView] hilfe bei speichern der Items etc.

  Alt 29. Dez 2005, 17:56
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"?
  Mit Zitat antworten Zitat
Benutzerbild von Assun
Assun

Registriert seit: 3. Feb 2005
Ort: Hilzingen am Bodensee
469 Beiträge
 
Delphi 2005 Personal
 
#7

Re: [ListView] hilfe bei speichern der Items etc.

  Alt 29. Dez 2005, 18:02
Zitat:
for i := 0 to ListView1.Items.Count -1 do
<-- dort sagt er mir er kennt ListView1 nicht, was aber gar nicht sein kann
Sebastian Dietrich
http://Assun.de - bald komplett überarbeitet
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.251 Beiträge
 
Delphi 2006 Professional
 
#8

Re: [ListView] hilfe bei speichern der Items etc.

  Alt 29. Dez 2005, 18:03
Zitat von Assun:
.. was aber gar nicht sein kann
Doch, das ist so!
Deine Prozecure WriteSettings(); ist keine Methode deiner TForm1 und darum kannst Du so auch nicht auf Ojbekte dieser Klasse zugreifen.
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
Benutzerbild von dahead
dahead

Registriert seit: 16. Mai 2005
620 Beiträge
 
#9

Re: [ListView] hilfe bei speichern der Items etc.

  Alt 29. Dez 2005, 18:04
doch kann sein, da es keine unter form1 deklarierte prozedur ist.

fügs unter private dazu, und er kennt es.

edit: sharky war schneller.
  Mit Zitat antworten Zitat
Benutzerbild von Assun
Assun

Registriert seit: 3. Feb 2005
Ort: Hilzingen am Bodensee
469 Beiträge
 
Delphi 2005 Personal
 
#10

Re: [ListView] hilfe bei speichern der Items etc.

  Alt 29. Dez 2005, 18:29
asoo ok dankeschön,klappt wunderbar !
Sebastian Dietrich
http://Assun.de - bald komplett überarbeitet
  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 11:46 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