Błąd - TImage

0

Witam! Mam następujący problem.

Chciałbym stworzyc taki plik:

TMiejsce = Record
                   Nazwa : String[20];
                   Obrazek : TImage;
                   Pozycja : TPoint;
                 End;
.
.
.

Plik : File Of TMiejsce;

Chciałbym wcześniej zapisać do tablicy dziesięć obrazków.

Array [1..10] Of TImage;

Po kliknięciu chciałbym, aby owy obraz się stworzył.

Tablica[1].Name := 'Image2';
MainForm.Create(Tablica[1]);

I przy tym ostanim zapisie wyskakuje mi błąd.

Project Project1.exe raised exception class EAccesViolation with message 'Acces violation at address 045226 in module 'Project1.exe'. Read of address 00000000'. Program stopped (...)

Jest możliwe zrobienie to w taki sposób? Poprzez tablice? Czy proponujecie jakiś inny sposób rozwiązania tego problemu?

Przepraszam jeżeli w złym dziale, prosze admina lub moderatora o przeniesienie.

Z góry dziękuję.

0

a co jest w MainForm.Create????

daj CAŁY kod a nie tylko jakieś nic nie znaczące kawałki

0
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, StdCtrls, Buttons, Menus, XPMan;

type
  TMainForm = class(TForm)
    MainMenu1: TMainMenu;
    Plik1: TMenuItem;
    adujmap1: TMenuItem;
    Edycja1: TMenuItem;
    Dodajmiejsce1: TMenuItem;
    XPManifest1: TXPManifest;
    Image1: TImage;
   
    procedure adujmap1Click(Sender: TObject);
    procedure Dodajmiejsce1Click(Sender: TObject);
    procedure stworzPunkt(Punkt : TPoint);
    procedure Image1Click(Sender: TObject);
    procedure Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    procedure Image1MouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  MainForm: TMainForm;

  wybieranie : BOOLEAN;
  Tablica : ARray [1..20] Of TImage;
implementation

{$R *.dfm}

procedure TMainForm.adujmap1Click(Sender: TObject);
begin
 Image1.Picture.LoadFromFile('E:\PROJEKTY\Debica\debica.bmp');
end;

procedure TMainForm.Dodajmiejsce1Click(Sender: TObject);
begin
  Image1.Cursor := crCross;
  wybieranie := TRUE;
end;

procedure TMainForm.Image1Click(Sender: TObject);
var
x,y : Integer;
wiadomosc : String;
begin
  If wybieranie Then
    Begin
      //Podstawy
      ShowMessage('Tu kliknąłes!');
      Image1.Cursor := crDefault;
      wybieranie := FALSE;

      // Teraz X,Y
      X := Mouse.CursorPos.X;
      Y := Mouse.CursorPos.Y;
      wiadomosc := 'X: ' + IntToStr(X) + 'Y: ' + IntToStr(Y);
      ShowMessage(wiadomosc);
    end;
end;
procedure TMainForm.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
  If not wybieranie Then
    Image1.Cursor := crDefault;
end;

procedure TMainForm.stworzPunkt(Punkt : TPoint);
var
nazwa : String;

begin

Tablica[1].Name := 'Image2';
MainForm.Create();    //<<<<<  Tutaj problem


end;


procedure TMainForm.Image1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
var
  punkt : TPoint;
begin
  If wybieranie Then
    Begin
      //Podstawy
      Image1.Cursor := crDefault;
      wybieranie := FALSE;

      // Teraz X,Y
      ShowMessage('Czy utworzyc punkt w miejscu ' + IntToStr(x) + ',' + IntToStr(y) + ' ?');

      //Tworzenie punktu
      punkt.x := X;
      punkt.y := y;

      stworzPunkt(Punkt);
    end;
    
end;

end.
0

Źle to robisz.
Powinno być przykładowo

  Tablica[1]:=TImage.Create(Self);  
  Tablica[1].Parent:=Self;
  Tablica[1].Name:='Image2';
0

Dziękuję bardzo. [browar]

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