AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Combobox Einstellungen Speichern

Ein Thema von Gast · begonnen am 20. Okt 2004 · letzter Beitrag vom 21. Okt 2004
Antwort Antwort
Seite 1 von 2  1 2      
Gast
(Gast)

n/a Beiträge
 
#1

Combobox Einstellungen Speichern

  Alt 20. Okt 2004, 17:41
Hallo,
bin auf dem Gebiet Delphi relativer Anfänger. Habe jetzt 2 Stunden in google gesucht und bin auch fündig geworden aber irgendetwas mache ich Falsch. Brauche dringend Hilfe.

Meine Lage:
Habe eine Combobox erstellt und diese Funktioniert auch soweit. Diese Combobox ändert die Hintergrundfarbe eines Memo Fensters. Jetzt möchte ich es aber machen, dass ich auf Speichern klicken kann und der das dann speichert und auf laden und er die letzte Hintergrundfarbe lädt. Dies möchte ich sehr gerne mit einer ini Datei machen.

Meine Probleme:
- Weiss nicht was besser ist zu speichern: Entweder den Wert der Combobox oder den Wert des Hintergrundes des Memo-Feldes.
- Auch wenn ich mich für eins entscheide habe ich Probleme.

Mein Versuch:
Hier die Procedure zum Speichern:
Code:
procedure TForm1.Button1Click(Sender: TObject);
var ini: TIniFile;

begin
ini:=TIniFile.create(ExtractFilePath(ParamStr(0))+
    'einstellungen.ini');
  Ini.WriteInteger('Hintergrund', 'Farbe', Memo1.Color);
end;
Und hier zum Laden:
Code:
procedure TForm1.Button2Click(Sender: TObject);
var ini: TIniFile;
begin
  ini:=TIniFile.Create('einstellungen.ini');
  try
   memo1.color := ini.ReadInteger('Hintergrund', 'Farbe', clwhite);
  finally
   ini.free;
  end;
end;

Kann sein, dass ich einen ganz dummen Fehler mache. Aber bitte nicht auslachen. Würde mich über eine Antwort sehr freuen

Gr33tz!
Tigerhead

PS: Da ich neu in dieser Community bin, hoffe ich, dass mein Beitrag gegen keine Regeln verstößt.
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.116 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Combobox Einstellungen Speichern

  Alt 20. Okt 2004, 17:57
Moin Tigerhead,

erst einmal herzlich willkommen hier in der Delphi-PRAXiS.

Als erstes möchte ich Dich mal beruhigen:
Ich kann keinen Regelverstoss ausmachen

Nun aber mal zu Deinem Problem.

Ich halte es für sinnvoll nicht die Farbe des Memo, sondern den gewählten Wert der ComboBox zu speichern, da dies ja auch dem Programmablauf entspricht.
Hier bedingt eine Auswahl aus der ComboBox eine Änderung der Farbe des Memofeldes.

Leider hast Du nicht geschrieben, wie Du die Werte in der ComboBox speicherst.
Solltest Du es so machen (Style der ComboBox auf csDropDownList)

  ComboBox1.Items.AddObject('Blau',TObject(clBlue)); könntest Du einfach direkt ComboBox1.ItemIndex in der Ini speichern, und auch wieder auslesen.
Dann fehlt nur noch das Zuweisen der Farbe im OnChange Ereignis der ComboBox.

BTW:
Beim Speichern fehlt der Try/Finally Block, und bei Laden der Pfad.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Benutzerbild von malo
malo

Registriert seit: 19. Sep 2004
2.115 Beiträge
 
#3

Re: Combobox Einstellungen Speichern

  Alt 20. Okt 2004, 17:58
Erstmal willkommen in der DP

1. Was für Probleme treten denn genau auf? Dass du dich nicht entscheiden kannst, was besser ist?

2. Beim Speichervorgang hast du die Variable ini nicht freigegeben(bin ja selbst Anfänger, kenn mich damit nicht so gut aus, ist mir aber mal aufgefallen )
  Mit Zitat antworten Zitat
Benutzerbild von patti
patti

Registriert seit: 20. Okt 2004
Ort: Mittelfranken
665 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: Combobox Einstellungen Speichern

  Alt 20. Okt 2004, 19:06
Hey alle da drausen!

Ich bin auch neu hier, aber ich programmiere schon etwas länger mit
Delphi! Delphi ist einfach sau geil.*g*

Ich hatte mal das gleiche Problem und ich hoffe, dass ich helfen kann.

Ich weiß leider nicht genau was du haben willst aber ich glaub ich habe eine
Lösung.

Es gibt die Möglichkeit, den Text der ComboBox1 zu speichern bzw. zu laden.
Ist ganz einfach: Ich erklär mal ganz kurz:

einal für das Speichern:

Delphi-Quellcode:
procedure TForm1.FormClose(Sender: TObject);
var inidat : TInifile;
begin
      IniDat := TIniFile.Create('.\Farbeneinstellungen.Ini');
      with inidat do begin
           WriteString('Einstellungen','Farbe',ComboBox1.Text);
      end;

end;

und natürlich zum Laden:


Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
var inidat : TInifile;
begin
      IniDat := TIniFile.Create('.\Farbeneinstellungen.Ini');
      with inidat do begin
           ComboBox1.Text := ReadString('Einstellungen','Farbe',ComboBox1.Text);
      end;

end;
Jetzt brauchst du nur noch eine Prozedur zum Auswerten.

Es gibt auch noch eine andere, wahrscheinlich bessere Lösung:

Durch Ordinaltypen!!!

Ich stelle einfach mal den kompletten Quelltext rein.
Den hab ich extra schnell entworfen. Extra für dich!

Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, Inifiles;

type TFarben = (TF_blau, TF_gelb, TF_rot, TF_gruen);

type
  TForm1 = class(TForm)
    ComboBox1: TComboBox;
    Button1: TButton;
    Button2: TButton;
    Memo1: TMemo;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure ComboBox1Change(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
    Farbe : TFarben;
    procedure setzeFarbe;
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.setzeFarbe;
begin
     case Farbe of
     TF_blau: Memo1.Color := clblue;
     TF_gelb: Memo1.Color := clYellow;
     TF_gruen: Memo1.Color := cllime;
     TF_rot: Memo1.Color := clred;
     end;
end;
procedure TForm1.Button1Click(Sender: TObject);
var inidat : TInifile;
begin
     inidat := TInifile.Create('.\Test.Ini');
     with inidat do begin
          WriteInteger('SpTest','SpTest', Ord(Farbe));
     end;
end;

procedure TForm1.Button2Click(Sender: TObject);
var inidat : TInifile;
var auswahl : integer;
begin
     inidat := TInifile.Create('.\Test.Ini');
     with inidat do begin
     auswahl := ReadInteger('SpTest','SpTest', Ord(Farbe));
     end;
     case auswahl of
     0: begin Farbe := TF_blau;
                 ComboBox1.Text := 'BLAU';
                 end;
     1: begin Farbe := TF_gelb;
                 ComboBox1.Text := 'GELB';
                 end;
     2: begin Farbe := TF_rot;
                 ComboBox1.Text := 'ROT';
                 end;
     3: begin Farbe := TF_gruen;
                 ComboBox1.Text := 'GRÜN';
                 end;
     end;
     setzeFarbe;
end;

procedure TForm1.ComboBox1Change(Sender: TObject);
begin
     if ComboBox1.Text = 'BLAUthen Farbe := TF_blau;
     if ComboBox1.Text = 'GELBthen Farbe := TF_gelb;
     if ComboBox1.Text = 'ROTthen Farbe := TF_rot;
     if ComboBox1.Text = 'GRÜNthen Farbe := TF_gruen;
     setzeFarbe;
end;

end.
Hier habe ich einfach einen Typ dekleriert.
Nicht vergessen: Die Ordinaltypen fangen immer bei 0 an!

Ich kann das jetzt leider nicht ganz erklären. Wenn jemand
Hilfe braucht, soll er mir einfach eine E-Mail schreiben : ich@patti-k.de!
Viel Spaß!
Ich hoffe ich habe keine Fehler gemacht! Schreibt mir halt einfach, ob es hinhaut
oder nicht.
Patrick Kreutzer
[Informatik-Student im 4. Semester]
http://www.patti-k.de/
  Mit Zitat antworten Zitat
Gast
(Gast)

n/a Beiträge
 
#5

Re: Combobox Einstellungen Speichern

  Alt 20. Okt 2004, 19:30
Hallo,
habe mir alle Antworten durchgelesen und erstmal ein GANZ DICKES Dankeschön an euch alle. Am meisten geholfen hat mir Patty. Danke, dass du mir das geschrieben hast Es funktioniert jetzt alles Wunderbar *freu*. Das mache ich jetzt mit 10 Farben und für jeweils 6 Combobox´s Also eine Menge Arbeit für einen Anfänger wie mich. Wenn ich Probleme haben werde ich mich nicht scheuen euch diese mit zu teilen.

Klasse Community

Gr33tz!
Tigerhead
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.116 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: Combobox Einstellungen Speichern

  Alt 20. Okt 2004, 19:57
Moin Patti,

auch Dir erst einmal ein herzliches Willkommen hier in der Delphi-PRAXiS.

Schau Dir doch noch einmal meine Lösung zu dem Problem an.
Es lassen sich die Farbe und der Text in den ComboBox Items zusammenfassen, ohne noch einen weiteren Typ deklarieren zu müssen.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Gast
(Gast)

n/a Beiträge
 
#7

Re: Combobox Einstellungen Speichern

  Alt 20. Okt 2004, 20:05
Mhh war wohl zu voreilig. So wie es mir der Patty geschrieben hat, kann mir das vllt jemand anderes auch schreiben ? Brauche es aber für 6 Comboboxen .

Combobox1 Memo1.color
Combobox2 ListBox1.color
Combobox3 Mitteilung.color
Combobox4 Memo1.Font.Color
Combobox5 ListBox1.Font.Color
Combobox6 Mitteilung.Font.Color

Hoffentlich kann man das irgendwie zusammen fassen, denn das ist ein riesen durcheinander so Es geht zwar von Patty aber macht alles unübersichtlich, sorry Patty. Wäre wirklich SUPER nett wenn mir das jmd machen könnte. Nicht weil ich zu Faul bin sondern zu dumm das zusamen zu fassen . Sorry für die Anfrage *heul*
  Mit Zitat antworten Zitat
Gast
(Gast)

n/a Beiträge
 
#8

Re: Combobox Einstellungen Speichern

  Alt 21. Okt 2004, 01:49
Habe bis jetzt das hier:

Code:
function GetColor(idx: Integer): TColor;
begin
    case idx of
      0 : result := clWhite;
      1 : result := clBlack;
      2 : result := clRed;
      3 : result := clYellow;
      4 : result := clBlue;
      5 : result := clGreen;
      6 : result := clGray;
      7 : result := clSilver;
      8 : result := clOlive;
      9 : result := clMaroon;
      10 : result := clNavy;
    end;
  end;

procedure TForm1.Combobox1Change(Sender: TObject);
begin
Memo1.color := getcolor(Combobox1.ItemIndex);
end;

procedure TForm1.ComboBox2Change(Sender: TObject);
begin
ListBox1.color := getcolor(Combobox2.ItemIndex);
end;

procedure TForm1.ComboBox3Change(Sender: TObject);
begin
Mitteilung.color := getcolor(Combobox3.ItemIndex);
end;

procedure TForm1.ComboBox4Change(Sender: TObject);
begin
Memo1.Font.Color := getcolor(Combobox4.ItemIndex);
end;

procedure TForm1.ComboBox5Change(Sender: TObject);
begin
ListBox1.Font.Color := getcolor(Combobox5.ItemIndex);
end;

procedure TForm1.ComboBox6Change(Sender: TObject);
begin
Mitteilung.Font.Color := getcolor(Combobox6.ItemIndex);
end;
Komme echt nicht weiter und wer auf die Uhrzeiten meines Posts guckt sieht auch, dass ich bereits Stunden da dran bin *heul* .. wäre sehr nice wenn mir einer helfen könnte.


Gr33tz!
Tigerhead
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

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

Re: Combobox Einstellungen Speichern

  Alt 21. Okt 2004, 08:55
Hai,
ich habe mal schnell das hier getippelt. Die Zuordnung welche ComboBox bei was die Farbe ändert mache ich einfach über die TAG-Eigenschaft der Combobox. Bei mir ist:

Tag = 0 = Memo1
Tag = 1 = ListBox1

Das sollte sich leicht erweitern lassen

Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
var
  ini : TIniFile;
begin
  ComboBox1.Clear;
  ComboBox2.Clear;
  ComboBox1.Items.AddObject('blau',TObject(clblue));
  ComboBox1.Items.AddObject('rot',TObject(clred));
  ComboBox1.Items.AddObject('grün',TObject(clgreen));

  ComboBox2.Items.Assign(ComboBox1.Items); // Einträge in zweite CB kopieren

  ini := TIniFile.Create(ExtractFilePath(Application.ExeName) + 'farben.ini');
  try
    ComboBox1.ItemIndex := ini.ReadInteger('farben','memo1',0);
    ComboBox2.ItemIndex := ini.ReadInteger('farben','listbox1',0);
  finally
    ini.Free;
  end;

  ComboBox1.OnChange(ComboBox1); // Das OnChange auslösen
  ComboBox1.OnChange(ComboBox2);
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
var
  ini : TIniFile;
begin
  ini := TIniFile.Create(ExtractFilePath(Application.ExeName) + 'farben.ini');
  try
    ini.WriteInteger('farben','memo1',ComboBox1.ItemIndex);
    ini.WriteInteger('farben','listbox1',ComboBox2.ItemIndex);
  finally
    ini.Free;
  end;
end;

procedure TForm1.AlleComboBoxChange(Sender: TObject);
var
 myCombo : TComboBox;
begin
  mycombo := Sender As TComboBox;
  Case (myCombo.Tag) of
    0: Memo1.Color := TColor (myCombo.Items.Objects[myCombo.ItemIndex]);
    1: ListBox1.Color := TColor (myCombo.Items.Objects[myCombo.ItemIndex]);
  end;
end;
P.S.: Allen Comboboxen ist das selbe OnChange-Ereigniss zugewiesen.
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
Gast
(Gast)

n/a Beiträge
 
#10

Re: Combobox Einstellungen Speichern

  Alt 21. Okt 2004, 14:02
Hallo,

Erst einmal wirklich ein GANZ FETTES THX an dich. Machst dir wirklich viel Arbeit mir zu helfen. < Danke

Habe jetzt nur ein paar Probleme:
- Ich möchte einen Button für Speichern und einen für Laden. Ich weiß aber nicht was alles aus dem FormCreate in den Laden Button rein muss. Wäre nett wenn du das auseinandere fetzen könntest. Denn ich glaube alles auf den Laden Button von FormCreate geht nicht.
- Und mein zweites Problem ist, dass ich nicht viel mit "AlleComboBoxChange" anfangen kann. Ich tippe mal ich muss die einzelnen Comboboxen dazu definieren oder so. weiss aber nicht wie das geht. Vielleicht kannste mir das ja schreiben

Wenn du das getan hast, dann gucke ich mal ob es dann funktioniert. Natürlich nur wenn du Zeit und Lust hast mir zu helfen..

Button zum Speichern = Button1
Button zum Laden = Button2

(Ich weiß keine Einfallsreichen Namen aber solange man den Überblick einiger Maßen hat )


Gr33tz!
Tigerhead
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 05:20 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