dynamiczny TImage mały problem

0

mam program który tworzy dynamicznie 160 komponentów TImage o podanej nazwie z numerkiem
tworzenie wykonuje się bezproblemowo ale mam problem z pobraniem z każdego dynamicznego obrazu ścieżki do pliku i zapisania go do tablicy jako string

moje pytanie brzmi: jak pobrać z każdego utworzonego komponentu ścieżkę do pliku grafiki i zapisać ją w tablicy? wiem tyle że to robi się po wyszukiwaniu nazwy komponentu ale próbowałem na różne sposoby i wywala mi błąd, kto pomoże?

ps. jeśli był taki temat to sory ale nie znalazłem

0

stworz prosta kalse dziedziczaca po TImage dodajaca pole ze sciezka do pliku

type TNewImage = class(TImage)
private
FilePath : string;
end;

i teraz w programie tworzysz dynamicznie tak jak TImage

var obrazek : TNewImage;

obrazek := TNewImage.Create(self);
obrazek.parent := Form1;
...
obrazek.FilePath := 'C:';

(analogicznie mozesz rozszerzyc TNewImage np. o unikalne idb obrazka)

0

ale po co mam tworzyć nową klasę skoro TImage ma już Picture.LoadFromFile(sciezka) i chodzi mi o to żeby z kazdego tego dynamicznego komponentu TImage pobrać adres sciezki do pliku i zapisać do tabli czy pliku wszystkie od 0 do 159 (160) tylko nie wiem jak za pomocą nazwy kazdego komponentu uzyskać to, komponenty (nazwy) są z numerkami (pętla) i nie wiem jak wywołać kazdy taki już stworzony komponent i pobrać z niego sciezke pliku graficznego który ma przypisany, troche to skomplikowane ale wydaje mi się że dałoby sie to zrobić bez tworzenia nowej klasy tylko pytanie jak?

0

FindComponent

TImage(FindComponent('NAZWA'+IntToStr(i))).

0
<email> > ##### _akuku_ napisał(a) > FindComponent > > TImage(FindComponent('NAZWA'+IntToStr(i))).

no dobra tyle to i ja wiem ale dalej... pobrana nazwa komponentu a z tego komponentu jak pobrać sciezke grafiki ( Picture.LoadFromFile(sciezka) ) i zapisać do stringa???</email>

selfem przeciez nic nie zrobie bo to w końcu wskaźnik na wskazany komponent a ja nie wskazuje tylko pobieram z kazdego komponentu wiec jak to zrobić?

0
Peloo napisał(a)

ale po co mam tworzyć nową klasę skoro TImage ma już Picture.LoadFromFile(sciezka)

Przecież TImage w żaden sposób "nie zapamiętuje" tej ścieżki. Utwórz sobie tablicę, w której podczas tworzenia Image'ów zapamiętasz kolejne ścieżki.

0

jak wyzej kolega napsał :), a tu rozwinięcie koncepcji z pierwszej mojej odpowiedzi ;p

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, jpeg, ExtCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;


type
  TMyImage = class(Timage)
    public
      FileName : string;
      procedure LoadFromFile( const FileName : string);
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

{ TMyImage }
procedure TMyImage.LoadFromFile(const FileName: string);
begin
  self.FileName := FileName;
  Picture.LoadFromFile(self.FileName);
end;

procedure TForm1.Button1Click(Sender: TObject);
var MyImage : TMyImage;
begin
  myImage := TMyImage.Create(Form1);
  myImage.Parent := Form1;
  myImage.LoadFromFile('C:\a.jpg');
  showmessage( myImage.FileName );
end;


end.

1 użytkowników online, w tym zalogowanych: 0, gości: 1