Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.11.2012, 10:41   #1
marales
Пользователь
 
Регистрация: 12.03.2011
Сообщений: 22
По умолчанию как обратится к объектам

Как обратиться к объектам image которые находятся в массиве pl1[i], в процедуре onclick1 для image.??

Код:
type
  TForm1 = class(TForm)
    Image1: TImage;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    procedure FormCreate(Sender: TObject);
    procedure onclick1 (Sender: Tobject);
  private
    { Private declarations }
  public
    { Public declarations }

  end;

  type karta = record
      plus:integer;
      fon: string;
      kartinka:string;
      img: Timage;
      score: integer;
      fon1: boolean;
      color: String;
      position: integer;

   end;

var
  Form1: TForm1;
  maskol: array[1..108] of karta;
  pl1: array[1..108] of karta;
  pl2: array[1..108] of karta;
  pole: array [1..108] of karta;
  sylki: array [1..108] of string;
 
implementation

procedure createkoloda;
var i:integer;
    s:string;
begin
ini:=TIniFile.Create('C:\1\uno\koloda.ini');
for i:=1 to 108 do
  begin
    s:=inttostr(I);
    maskol[i].plus:=ini.ReadInteger(s,'plus',0);
    maskol[i].fon:='c:\1\uno\fon.jpeg';
    maskol[i].kartinka:=ini.ReadString(s,'kartinka','ошибка');
    maskol[i].score:=ini.ReadInteger(s,'score',0);
    maskol[i].color:=ini.ReadString(s,'color','ошибка');
    maskol[i].position:=0;
  end;

end;

procedure pomehkoloda;
var tmp: karta;
    i,j,z:integer;
begin
randomize;
  for i:=1 to 108 do
      begin
          j:=random(108)+1;
          z:=random(108)+1;
          tmp:=maskol[z];
          maskol[z]:=maskol[j];
          maskol[j]:=tmp;
      end;
end;

procedure Tform1.onclick1 (Sender: Tobject);
begin
//a:=TComponent(Sender).Name; 

end;

procedure createimage;
var i:integer;
begin
for i:=1 to 108 do
  begin
    maskol[i].img:=TImage.Create(form1);
    maskol[i].img.Parent:=form1;
    maskol[i].fon1:=true;
    maskol[i].img.Height:=110;
    maskol[i].img.Width:=70;
    maskol[i].img.Stretch:=true;
    maskol[i].img.Left:=50;
    maskol[i].img.top:=150;
    maskol[i].img.Name:='img'+inttostr(i);
    maskol[i].img.OnClick:=Form1.onclick1;

  end;

end;

function razdacha(fon: boolean; kol,kuda:integer):karta;
var i:integer;
begin
case kuda of  ///Раздаем карты с колоды
0: begin
      for i:=1 to kol do
          begin
             kolpole:=kolpole+1;
             kolmas:=kolmas-1;
             form1.Label1.Caption:=inttostr(kolmas);
             pole[kolpole]:=maskol[kolmas];
             pole[kolpole].img.Left:=x;
             pole[kolpole].img.Top:=z;
             x:=x+75;
             if  fon=false then
                  begin
                    pole[kolpole].img.Picture.LoadFromFile(pole[kolpole].kartinka);
                  end
                                        else
                  begin
                    pole[kolpole].img.Picture.LoadFromFile(pole[kolpole].fon);
                  end;
          end;
   end;
1: begin
      for i:=1 to kol do
          begin
             kolpl1:=kolpl1+1;
             kolmas:=kolmas-1;
             form1.Label1.Caption:=inttostr(kolmas);
             pl1[kolpl1]:=maskol[kolmas];
             pl1[kolpl1].img.Left:=l;
             pl1[kolpl1].img.Top:=v;
             l:=l+75;
             form1.Label3.Caption:=inttostr(kolpl1);
             if fon=false  then
                  begin
                    pl1[kolpl1].img.Picture.LoadFromFile(pl1[kolpl1].kartinka);
                  end
                                        else
                  begin
                    pl1[kolpl1].img.Picture.LoadFromFile(pl1[kolpl1].fon);
                  end;
          end;
   end;
2: begin
       for i:=1 to kol do
          begin
              kolpl2:=kolpl2+1;
              kolmas:=kolmas-1;
              form1.Label1.Caption:=inttostr(kolmas);
              pl2[kolpl2]:=maskol[kolmas];
              pl2[kolpl2].img.Left:=t;
              pl2[kolpl2].img.Top:=y;
              t:=t+75;
              form1.Label2.Caption:=inttostr(kolpl2);
              if fon=false  then
                  begin
                    pl2[kolpl2].img.Picture.LoadFromFile(pl2[kolpl2].kartinka);
                  end
                                        else
                  begin
                    pl2[kolpl2].img.Picture.LoadFromFile(pl2[kolpl2].fon);
                  end;
          end;
   end;
end;
end;





{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
createkoloda;
pomehkoloda;
createimage;
new;
end;

end.
marales вне форума Ответить с цитированием
Старый 14.11.2012, 10:56   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

если я правильно понял вопрос, то через Sender
например, так:
Код:
if Sender is TImage then
             (Sender as TImage).нужные поля/методы...


p.s. колоду мешаете плохо. Почему плохо и как надо тасовать карты - поищите по форуме...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 14.11.2012, 11:10   #3
marales
Пользователь
 
Регистрация: 12.03.2011
Сообщений: 22
По умолчанию

Спасибо большое всё верно работает.
marales вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как обратится к конкретной ячейке loki22208 БД в Delphi 8 03.05.2010 20:07
Как обратится к символам конкретной строки? QuadroX Помощь студентам 1 11.02.2010 12:27
Как обратится к глобальной переменной из модуля tavrocotaps Общие вопросы Delphi 2 10.06.2009 11:08
как обратится HrenoV Общие вопросы C/C++ 1 16.02.2007 18:05