AGB  ·  Datenschutz  ·  Impressum  







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

Positionen mehrerer TImage speichern

Ein Thema von smart · begonnen am 30. Mär 2006 · letzter Beitrag vom 30. Mär 2006
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von smart
smart

Registriert seit: 19. Dez 2004
Ort: Bochum
1.266 Beiträge
 
Delphi 2007 Professional
 
#1

Positionen mehrerer TImage speichern

  Alt 30. Mär 2006, 17:41
Hallo!

Ich habe auf einer Form, 30 TImages die man bewegen kann. Nun möchte ich in einer Datei die Positionen (.Top und .Left) abspeichern. Das ganze einzeln zu machen ist sehr aufwendig, deshalb meine Frage: Ist es möglich dies mit einer Schleife zu machen. Wenn ja, wir?

Gruß
Heike
Heike Kretschmann
Viele Grüße aus Bochum

kaum denkt man alles ist fertig, da fängt man wieder von Vorn an.
  Mit Zitat antworten Zitat
Benutzerbild von Die Muhkuh
Die Muhkuh

Registriert seit: 21. Aug 2003
7.332 Beiträge
 
Delphi 2009 Professional
 
#2

Re: Positionen mehrerer TImage speichern

  Alt 30. Mär 2006, 17:54
Hallo Heike,

wenn deine Images Image0..Image29 heißen, ist das sehr einfach:

[edit2] Code falsch. Bitte weiter unten gucken [/edit2]

Ist jetzt aussem Kopf geschrieben, sollte aber funktionieren

[edit] Ich glaub, da war noch ein Fehler im Code *g* [/edit]
  Mit Zitat antworten Zitat
Benutzerbild von smart
smart

Registriert seit: 19. Dez 2004
Ort: Bochum
1.266 Beiträge
 
Delphi 2007 Professional
 
#3

Re: Positionen mehrerer TImage speichern

  Alt 30. Mär 2006, 18:00
Vielen Dank, Spider! Damit komme ich weiter.

Heike
Heike Kretschmann
Viele Grüße aus Bochum

kaum denkt man alles ist fertig, da fängt man wieder von Vorn an.
  Mit Zitat antworten Zitat
Benutzerbild von Die Muhkuh
Die Muhkuh

Registriert seit: 21. Aug 2003
7.332 Beiträge
 
Delphi 2009 Professional
 
#4

Re: Positionen mehrerer TImage speichern

  Alt 30. Mär 2006, 18:04
Zitat von smart:
Vielen Dank, Spider! Damit komme ich weiter.

Heike
Bitte,

alternativ könntest du noch sowas machen:

Delphi-Quellcode:
procedure SaveImage(Image: TImage);
var
  Ini: TIniFile;
begin
  Ini := TIniFile.Create('<Pfad, wo gespeichert werden soll>');

  try
    Ini.WriteInteger(Image.Name, 'Left', Image.Left);
    Ini.WriteInteger(Image.Name, 'Top', Image.Top);
  finally
    Ini.Free;
  end;
end;

procedure LoadImage(Image: TImage);
var
  Ini: TIniFile;
begin
  Ini := TIniFile.Create('<Pfad, wo gespeichert werden soll>');

  try
    Image.Top := Ini.ReadInteger(Image.Name, 'Top', 0);
    Image.Left := Ini.ReadInteger(Image.Name, 'Left', 0);
  finally
    Ini.Free;
  end;
end;
Der Aufruf wäre dann:

Delphi-Quellcode:
SaveImage(Image1);
SaveImage(ImageTop);
SaveImage(ImageBottom);

// bzw.

LoadImage(Image1);
LoadImage(ImageTop);
SaveImage(ImageBottom);
Dann wäre der Name des Images eigentlich egal
  Mit Zitat antworten Zitat
Benutzerbild von smart
smart

Registriert seit: 19. Dez 2004
Ort: Bochum
1.266 Beiträge
 
Delphi 2007 Professional
 
#5

Re: Positionen mehrerer TImage speichern

  Alt 30. Mär 2006, 18:23
Zitat von Spider:
Hallo Heike,

wenn deine Images Image0..Image29 heißen, ist das sehr einfach:

      Ini.WriteInteger('Image' + IntToStr(I), 'Left', Image.Left); Ist jetzt aussem Kopf geschrieben, sollte aber funktionieren
Hier bekomme ich eine Zugriffsverletzung. Obwohl der Code an sich richtig ist. Ne Idee was da falsch läuft?

Heike
Heike Kretschmann
Viele Grüße aus Bochum

kaum denkt man alles ist fertig, da fängt man wieder von Vorn an.
  Mit Zitat antworten Zitat
Benutzerbild von Die Muhkuh
Die Muhkuh

Registriert seit: 21. Aug 2003
7.332 Beiträge
 
Delphi 2009 Professional
 
#6

Re: Positionen mehrerer TImage speichern

  Alt 30. Mär 2006, 18:25
Hallo Heike,

kannst du mal überprüfen, ob Image <> nil ist?

Delphi-Quellcode:
  try
    for I := 0 to 29 do // Das sind 30 Images
    begin
      Image := (FindComponent('Image' + IntToStr(I)) as TImage);
      if Image = nil then
        raise Exception.Create('Image ist nil');
      Ini.WriteInteger('Image' + IntToStr(I), 'Left', Image.Left);
      Ini.WriteInteger('Image' + IntToStr(I), 'Top', Image.Top);
    end;
  finally
    Ini.Free;
  end;
  Mit Zitat antworten Zitat
Benutzerbild von smart
smart

Registriert seit: 19. Dez 2004
Ort: Bochum
1.266 Beiträge
 
Delphi 2007 Professional
 
#7

Re: Positionen mehrerer TImage speichern

  Alt 30. Mär 2006, 18:31
Zitat von Spider:
Hallo Heike,

kannst du mal überprüfen, ob Image <> nil ist?
Daran hatte ich auch schon gedacht. Die Images sind nicht nil. Dann habe ich die Verletzung hier:
Delphi-Quellcode:
      if Image = nil then
        raise Exception.Create('Image ist nil');
Heike
Heike Kretschmann
Viele Grüße aus Bochum

kaum denkt man alles ist fertig, da fängt man wieder von Vorn an.
  Mit Zitat antworten Zitat
Benutzerbild von Die Muhkuh
Die Muhkuh

Registriert seit: 21. Aug 2003
7.332 Beiträge
 
Delphi 2009 Professional
 
#8

Re: Positionen mehrerer TImage speichern

  Alt 30. Mär 2006, 18:39
Hmm, dann kommt der Fehler bei dem If-Statement.

Hast du per Debugger schonmal überprüft, ob Image wirklich <> nil ist?


Ach mist. Man sollte halt doch nicht aus dem Kopf schreiben. So müsste es jetzt funktionieren.

Delphi-Quellcode:
procedure SaveImages;
var
  Ini: TIniFile;
  I: Integer;
  Image: TImage;
begin
  Ini := TIniFile.Create('<Pfad, wo gespeichert werden soll>');

  try
    for I := 0 to 29 do // Das sind 30 Images
    begin
      Image := TImage(FindComponent('Image' + IntToStr(I))); // <<
      Ini.WriteInteger('Image' + IntToStr(I), 'Left', Image.Left);
      Ini.WriteInteger('Image' + IntToStr(I), 'Top', Image.Top);
    end;
  finally
    Ini.Free;
  end;
end;

procedure LoadImages;
var
  Ini: TIniFile;
  I: Integer;
  Image: TImage;
begin
  Ini := TIniFile.Create('<Pfad, wo gespeichert werden soll>');

  try
    for I := 0 to 29 do // Das sind 30 Images
    begin
      Image := TImage(FindComponent('Image' + IntToStr(I))); // <<
      Image.Top := Ini.ReadInteger('Image' + IntToStr(I), 'Top', 0);
      Image.Left := Ini.ReadInteger('Image' + IntToStr(I), 'Left', 0);
    end;
  finally
    Ini.Free;
  end;
end;
Manuel
  Mit Zitat antworten Zitat
Benutzerbild von smart
smart

Registriert seit: 19. Dez 2004
Ort: Bochum
1.266 Beiträge
 
Delphi 2007 Professional
 
#9

Re: Positionen mehrerer TImage speichern

  Alt 30. Mär 2006, 18:46
Zitat von Spider:
So müsste es jetzt funktionieren.
Spider,

der mag Image.Top und Image.Left nicht.

Heike.
Heike Kretschmann
Viele Grüße aus Bochum

kaum denkt man alles ist fertig, da fängt man wieder von Vorn an.
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

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

Re: Positionen mehrerer TImage speichern

  Alt 30. Mär 2006, 18:47
Hai Spider und Heike,

ich würde in solch einem Fall einfach alle Komponenten der Form durchlaufen, prüfen ob es ein TImage ist und dann wie von Spider gezeigt das ganze speichern. Um die ganzen unnötigen Schreib/Lesezugriffe auf die INI-Datei zu vermeiden sollte man ausserdem mit TMemIniFile arbeiten.
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  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 03:11 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