powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / TPanel + TImage массив
25 сообщений из 26, страница 1 из 2
TPanel + TImage массив
    #39573230
Askat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Доброе время суток!
Помогите люди добрые! Динамический пытаюсь создать TPanel, а на TPanel создать TImage, но что-то не так, в чем проблема?

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
procedure TForm1.Button2Click(Sender: TObject);
var
  x,y : integer;
  PanelArray: Array[1..5,1..5] of TPanel;

  i,j: Integer;
  ImgArray: Array[1..5,1..5] of TImage;

begin
  for y:=1 to 5 do begin
    for x := 1 to 5 do begin
      for i := 1 to 5 do begin
        for j := 1 to 5 do begin

          PanelArray[x,y]:=TPanel.Create(Self);
          PanelArray[x,y].Parent:= Self;
          PanelArray[x,y].Color:=clBtnFace;
          PanelArray[x,y].BevelInner:=bvNone;
          PanelArray[x,y].BevelKind:=bkNone;
          PanelArray[x,y].BevelOuter:=bvRaised;
          PanelArray[x,y].Left := x*100;
          PanelArray[x,y].Top := y*100;
          PanelArray[x,y].width:=90;
          PanelArray[x,y].height:=90;

          ImgArray[i,j] := TImage.Create(PanelArray[x,y]);
          ImgArray[i,j].Parent := PanelArray[x,y];
          ImgArray[i,j].Left := i*50;
          ImgArray[i,j].Top := j*50;
          ImgArray[i,j].Width := 50;
          ImgArray[i,j].Height := 50;
          ImgArray[i,j].Picture.LoadFromFile(IntToStr(i)+'.bmp');
        end;
      end;
    end;
  end;

end;
...
Рейтинг: 0 / 0
TPanel + TImage массив
    #39573233
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЧЕТЫРЕ вложенных цикла, ЖЕСТЬ
...
Рейтинг: 0 / 0
TPanel + TImage массив
    #39573310
alekcvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для начала не так то, что в элемент массива "PanelArray[x,y]" засовывается ДВАДЦАТЬ ПЯТЬ новых панелей и угадайте, куда деваются первые двадцать четыре?..
...
Рейтинг: 0 / 0
TPanel + TImage массив
    #39573345
white_nigger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А потом добавятся ещё пара циклов и у винды кончатся хэндлы...
...
Рейтинг: 0 / 0
TPanel + TImage массив
    #39573354
Askat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
white_niggerА потом добавятся ещё пара циклов и у винды кончатся хэндлы...

😂😂😂👍👍👍
Не подскажете как правильно оформить код?!)))
...
Рейтинг: 0 / 0
TPanel + TImage массив
    #39573468
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Без постановки задачи правильно оформить код неполучится
...
Рейтинг: 0 / 0
TPanel + TImage массив
    #39573473
Askat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DimaBrБез постановки задачи правильно оформить код неполучится

Щас я почти уже разобрался, позже выложу
...
Рейтинг: 0 / 0
TPanel + TImage массив
    #39573477
Tactical Nuclear Penguin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AskatDimaBrБез постановки задачи правильно оформить код неполучится

Щас я почти уже разобрался, позже выложу

подожди до пятницы
...
Рейтинг: 0 / 0
TPanel + TImage массив
    #39573494
Askat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tactical Nuclear PenguinAskatпропущено...


Щас я почти уже разобрался, позже выложу

подожди до пятницы

Можете подсказать, как сравнить картинки внутри панели?

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
procedure TForm1.FormCreate(Sender: TObject);
var
  X, Y: Integer;
  PanelArray: Array [1 .. 5, 1 .. 5] of TPanel;
  ImgArray: Array [1 .. 5, 1 .. 5] of TImage;
begin
  for Y := 1 to 5 do  begin
    for X := 1 to 5 do  begin

      PanelArray[X, Y] := TPanel.Create(Self);
      PanelArray[X, Y].Parent := Self;
      PanelArray[X, Y].Color := clBtnFace;
      PanelArray[X, Y].BevelInner := bvNone;
      PanelArray[X, Y].BevelKind := bkNone;
      PanelArray[X, Y].BevelOuter := bvRaised;
      PanelArray[X, Y].Left := X * 155;
      PanelArray[X, Y].Top := Y * 155;
      PanelArray[X, Y].Width := 150;
      PanelArray[X, Y].Height := 150;

      ImgArray[X, Y] := TImage.Create(PanelArray[X, Y]);
      ImgArray[X, Y].Parent := PanelArray[X, Y];
      ImgArray[X, Y].Left := x * 7;
      ImgArray[X, Y].Top := y * 3;
      ImgArray[X, Y].Width := 120;
      ImgArray[X, Y].Height := 120;
      ImgArray[X, Y].Picture.LoadFromFile(IntToStr(x) + '.bmp');
      ImgArray[X, Y].Stretch := True;

    end;
  end;

end;
...
Рейтинг: 0 / 0
TPanel + TImage массив
    #39573965
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AskatМожете подсказать, как сравнить картинки внутри панели?
Во-первых, "Динамически создать" - это не "сравнить картинки".
Если тебе нужно сравнивать два изображения - создай отдельный топик.
Во-вторых, это хорошо, что показываешь свой код, хоть и бесполезный,
но этого недостаточно - в первую очередь, нужно сформулировать саму
задачу, чётко и понятно - что надо и для чего.

http://citforum.ru/howto/smart-questions-ru.shtml#before
...
Рейтинг: 0 / 0
TPanel + TImage массив
    #39574062
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Когда же мы увидим саму задачу ?
...
Рейтинг: 0 / 0
TPanel + TImage массив
    #39574156
Askat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DimaBrКогда же мы увидим саму задачу ?

Задача: создать динамический панели и внутри каждой отобразить картинки. Вот и все.
...
Рейтинг: 0 / 0
TPanel + TImage массив
    #39574187
Gerasimenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AskatDimaBrКогда же мы увидим саму задачу ?

Задача: создать динамический панели и внутри каждой отобразить картинки. Вот и все.
А для чего вы сделали массивы двухмерными?
...
Рейтинг: 0 / 0
TPanel + TImage массив
    #39574190
asutp2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gerasimenko,

логично же почему - так проще на экране разместить панели в виде таблицы :) посмотри на присваивание значений .left и .top
...
Рейтинг: 0 / 0
TPanel + TImage массив
    #39574198
Gerasimenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
asutp2Gerasimenko,

логично же почему - так проще на экране разместить панели в виде таблицы :) посмотри на присваивание значений .left и .top

Логика отсутствует полностью
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
unit Unit1;

interface

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

type
  recPnlImg = record
    pnlImg:TPanel;
    img:TImage;
  end;
  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
    arRec:array[0..4] of recPnlImg;
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
var
 i:Integer;
begin
  for i:=0 to 4
   do begin
     arRec[i].pnlImg:=TPanel.Create(Form1);
     arRec[i].pnlImg.Parent:=Form1;
     arRec[i].pnlImg.Align:=alTop;

     arRec[i].img:=TImage.Create(Form1);
     arRec[i].img.Parent:=arRec[i].pnlImg;
     arRec[i].img.Align:=alLeft;
     arRec[i].img.Picture.LoadFromFile(...);
      end;
end;

end.

...
Рейтинг: 0 / 0
TPanel + TImage массив
    #39574298
LSV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AskatDimaBrКогда же мы увидим саму задачу ?Задача: создать динамический панели и внутри каждой отобразить картинки. Вот и все.POS для общепита, не ? :)
...
Рейтинг: 0 / 0
TPanel + TImage массив
    #39574434
Askat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
как подгрузить из таблицы картинки? Картинки хранятся в виде файлов на локальном компьютере, а в таблице хранятся путь к картинкам?


Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
procedure TForm1.FormCreate(Sender: TObject);
var
  X, Y, i: Integer;
  PanelArray: Array [1 .. 5, 1 .. 5] of TPanel;
  ImgArray: Array [1 .. 5, 1 .. 5] of TImage;
  ImgLink : string;
begin
  ADOQuery1.Close;
  ADOQuery1.Open;

    for Y := 1 to 5 do
      for X := 1 to 5 do
        begin

          while not ADOQuery1.Eof do
          begin

            PanelArray[X, Y] := TPanel.Create(Self);
            PanelArray[X, Y].Parent := Self;
            PanelArray[X, Y].Color := clBtnFace;
            PanelArray[X, Y].BevelInner := bvNone;
            PanelArray[X, Y].BevelKind := bkNone;
            PanelArray[X, Y].BevelOuter := bvRaised;
            PanelArray[X, Y].Left := X * 180 - 150;  // расстояние между панелями по горизонтали
            PanelArray[X, Y].Top := Y * 180 - 150;  // расстояние между панелями по вертикали
            PanelArray[X, Y].Width := 170;    // ширина панели
            PanelArray[X, Y].Height := 170;   // высота панели

            ImgArray[X, Y] := TImage.Create(PanelArray[X, Y]);
            ImgArray[X, Y].Parent := PanelArray[X, Y];
            ImgArray[X, Y].Left := x * 2;
            ImgArray[X, Y].Top := y * 2;
            ImgArray[X, Y].Width := 100;
            ImgArray[X, Y].Height := 100;
            //ImgArray[X, Y].Picture.LoadFromFile(IntToStr(x) + '.bmp');
            //ImgArray[X, Y].Picture.LoadFromFile('C:\image_ihumbnail_link\4.bmp');
            ImgArray[X, Y].Picture.LoadFromFile(ADOQuery1.FieldByName('ImageThumbnailLink').AsString);
            ImgArray[X, Y].Align := alClient;

            ImgArray[X, Y].AlignWithMargins := True;
            ImgArray[X, Y].Margins.Left := 0;
            ImgArray[X, Y].Margins.Top := 0;
            ImgArray[X, Y].Margins.Bottom := 0;
            ImgArray[X, Y].Margins.Right := 0;
            ImgArray[X, Y].Stretch := True;

          ADOQuery1.Next;
    end;


  end;



end;
...
Рейтинг: 0 / 0
TPanel + TImage массив
    #39574492
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да забудьте вы про двухмерный массив
...
Рейтинг: 0 / 0
TPanel + TImage массив
    #39574497
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
procedure TForm1.FormCreate(Sender: TObject);
var
  X, Y, i: Integer;
  PanelArray: Array [1 .. 25] of TPanel;
  ImgArray: Array [1 .. 25] of TImage;
  ImgLink : string;
begin
  ADOQuery1.Close;
  ADOQuery1.Open;
  i := 1;
  X := 30;
  Y := 30;
  while not ADOQuery1.Eof do begin
     PanelArray[i] := TPanel.Create(Self);
     with PanelArray[i] do begin
      Parent := Self;
      BevelInner := bvNone;
      BevelKind := bkNone;
      BevelOuter := bvRaised;
      SetBounds(X,Y,170,170);
    end;
    ImgArray[i] := TImage.Create(PanelArray[i]);
    with ImgArray[X, Y] do begin
      Parent := PanelArray[i];
      Align := alClient;
      Picture.LoadFromFile(ADOQuery1['ImageThumbnailLink']);
      Stretch := True;
    end;
    ADOQuery1.Next;
    inc(i);
    inc(X,170);
    if X > 850 then begin
      inc(Y,170);
      X := 30;
    end;
  end;
end;
...
Рейтинг: 0 / 0
TPanel + TImage массив
    #39575129
Askat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DimaBr

Спасибо!
...
Рейтинг: 0 / 0
TPanel + TImage массив
    #39578713
Askat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Почему то при OnClick показывает только первую запись, хотя значение к переменной ProdName присвоено в цикле?

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
  private
    { Private declarations }

   procedure btnBuyProductsClick(Sender: TObject);
  public
    ProdName: string;
    { Public declarations }
  end;

procedure TMainForm.btnBuyProductsClick(Sender: TObject);
begin
  ShowMessage(ProdName);
end;

procedure TMainForm.GetCards;
var
  CardList : string;
  pName, pCountry, pSumm, pCurrency, pImageLink : string;
  S, Sc : string;
  X, Y, i: Integer;

  ButtonBuy: Array [1 .. 25] of TUniButton;
  PanelArray: Array [1 .. 25] of TuniPanel;
  ImgArray: Array [1 .. 25] of TuniImage;
  PanForImg: Array [1 .. 25] of TuniPanel;
  LabelProdName: Array [1 .. 25] of TUniLabel;
  LabelPrice: Array [1 .. 25] of TUniLabel;

begin
try
  spmProduct.Close;
  spmProduct.Open;
  i := 1;
  X := 30;
  Y := 30;
  while not spmProduct.Eof do
  begin
     //Главная панель
     PanelArray[i] := TuniPanel.Create(UniScrollBox2);      //(1)
     with PanelArray[i] do
     begin
      Parent := UniScrollBox2;
      BevelInner := bvNone;
      BevelKind := bkNone;
      BevelOuter := bvRaised;
      SetBounds(X,Y,160,250);
     end;

     //Панель картинки
     PanForImg[i] := TuniPanel.Create(PanelArray[i]);    //(2)
     with PanForImg[i] do
     begin
      Parent := PanelArray[i];
      BevelInner := bvNone;
      BevelKind := bkNone;
      BevelOuter := bvRaised;
      Align := alTop;
      SetBounds(0,0,150,160);
     end;

     // Картинка
     ImgArray[i] := TuniImage.Create(PanForImg[i]);      //(3)
     with ImgArray[i] do
     begin
      Parent := PanForImg[i];
      Align := alClient;
      Picture.LoadFromFile(spmProduct['image_ihumbnail_link']);
      Stretch := True;
     end;

     // Метка: Наименование продукта
     LabelProdName[i] := TUniLabel.Create(PanelArray[i]);    //(2)
     with LabelProdName[i] do
     begin
      Parent := PanelArray[i];
      Caption:= spmProduct['name'];
      SetBounds(5,185,10,50);
     end;

     // Метка: Цена товара
     LabelPrice[i] := TUniLabel.Create(PanelArray[i]);    //(2)
     with LabelPrice[i] do
     begin
      pSumm := spmProduct['price_begin'];
      pCurrency := spmProduct['currencies_name'];
      Font.Size := 10;
      Parent := PanelArray[i];
      Caption:= pSumm + ' ' + pCurrency;
      SetBounds(5,165,10,50);
     end;

     // Кнопка: В корзину
     ButtonBuy[i] := TUniButton.Create(PanelArray[i]);    //(2)
     with ButtonBuy[i] do
     begin
      Parent := PanelArray[i];
      Caption:= 'В корзину';
      OnClick := btnBuyProductsClick;
      ProdName:= spmProduct['name'];
      Align := alBottom;
     end;

    spmProduct.Next;

    inc(i);
    inc(X,180);
    if X > 850 then
    begin
      inc(Y,270);
      X := 30;
    end;
  end;
finally
  PanelArray[i].Free;
  ImgArray[i].Free;
  PanForImg[i].Free;
  ButtonBuy[i].Free;
  LabelProdName[i].Free;
  LabelPrice[i].Free;
end;
end;
...
Рейтинг: 0 / 0
TPanel + TImage массив
    #39578742
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вы в присваиваете значение ProdName, на следующем цикле в переменную ProdName запихиваете новое значение. Куда девается старое ? Правильно, исчезает.
Вывод ProdName должен тоже быть массивом
...
Рейтинг: 0 / 0
TPanel + TImage массив
    #39578743
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Зачем запихивать в ProdName, если вы то же поле записываете в LabelProdName[i]
...
Рейтинг: 0 / 0
TPanel + TImage массив
    #39578751
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вместо огорода массивов, создайте сущность, которая будет отражать один элемент
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
TMyObject = class(TPanel)
  public
    PanForImg: TPanel;
    Img: TImage;
    LabelProdName: TLabel;
    LabelPrice: TLabel;
    ButtonBuy: TButton;
    pSumm : Currency;
    pCurrency: string;
    constructor Create(AOwner: TComponent);override;
    destructor Destroy;override;
end;

constructor TMyObject.Create(AOwner: TComponent);
begin
  PanForImg := TuniPanel.Create(self);    //(2)
  with PanForImg do begin
    Parent := self;
    BevelInner := bvNone;
    BevelKind := bkNone;
    BevelOuter := bvRaised;
    Align := alTop;
    SetBounds(0,0,150,160);
   end;

     // Картинка
   Img := TuniImage.Create(self);      //(3)
   with Img do  begin
    Parent := PanForImg;
    Align := alClient;
//    Picture.LoadFromFile(spmProduct['image_ihumbnail_link']);
    Stretch := True;
   end;

     // Метка: Наименование продукта
   LabelProdName := TUniLabel.Create(self);    //(2)
   with LabelProdName do begin
    Parent := self;
//    Caption:= spmProduct['name'];
    SetBounds(5,185,10,50);
   end;

     // Метка: Цена товара
   LabelPrice := TUniLabel.Create(self);    //(2)
   with LabelPrice do begin
//    pSumm := spmProduct['price_begin'];
//    pCurrency := spmProduct['currencies_name'];
    Font.Size := 10;
    Parent := self;
//    Caption:= pSumm + ' ' + pCurrency;
    SetBounds(5,165,10,50);
   end;

     // Кнопка: В корзину
   ButtonBuy[i] := TUniButton.Create(self);    //(2)
   with ButtonBuy do begin
     Parent := self;
     Caption:= 'В корзину';
//      OnClick := btnBuyProductsClick;
//      ProdName:= spmProduct['name'];
     Align := alBottom;
   end;  
end;

destructor Destroy;
begin
  Img.Free;
  PanForImg.Free;
  ButtonBuy.Free;
  LabelProdName.Free;
  LabelPrice.Free;
  inherited Destroy;
end;



Далее управляйте этими сущностями

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
  spmProduct.Close;
  spmProduct.Open;
  i := 1;
  X := 30;
  Y := 30;
  while not spmProduct.Eof do begin
    MyObjects[i] := TMyObject.Create(Self);
    with MyObject[i] do begin
      Parent := UniScrollBox2;
      SetBounds(X,Y,160,250);
      Img.Picture.LoadFromFile(spmProduct['image_ihumbnail_link']);
      LabelProdName.Caption:= spmProduct['name'];
      pSumm := spmProduct['price_begin'];
      pCurrency := spmProduct['currencies_name'];
      LabelPrice.Caption:= pSumm + ' ' + pCurrency;
      ButtonBuy.OnClick := btnBuyProductsClick;
    end;
    spmProduct.Next;
    inc(i);
    inc(X,180);
    if X > 850 then begin
      inc(Y,270);
      X := 30;
    end;
  end;



Ну и в событии btnBuyProductsClick в параметре Sender будет кнопка на которую нажали.

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
procedure TMyForm.btnBuyProductsClick(Sender: TObject);
var Btn: TButton;
     MyObject: TMyObject;
begin
  Btn := TButton(Sender);
  MyObject := TMyObject(Btn.Owner); // непосредственно объект, на кнопку которого мы нажали
// ну а у объекта уже есть все данные
// MyObject.pSumm - цена
// MyObject.pCurrency - валюта
end;
...
Рейтинг: 0 / 0
TPanel + TImage массив
    #39578853
Askat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DimaBr,

Ошибка вываливается

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
163.
164.
165.
166.
unit Main;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics,
  Controls, Forms, uniGUITypes, uniGUIAbstractClasses,
  uniGUIClasses, uniGUIRegClasses, uniGUIForm, Data.DB, Data.Win.ADODB,
  uniGUIBaseClasses, uniScrollBox, uniPanel, uniImage, uniButton, uniLabel;

type

TMyObject = class(TUniPanel)
  public
    PanForImg: TUniPanel;
    Img: TUniImage;
    LabelProdName: TUniLabel;
    LabelPrice: TUniLabel;
    ButtonBuy: TUniButton;
    pSumm : Currency;
    pCurrency: string;
    constructor Create(AOwner: TComponent);
    override;
    destructor Destroy;
    override;
end;


  TMainForm = class(TUniForm)
    ADOConnection1: TADOConnection;
    spmProduct: TADOQuery;
    UniScrollBox1: TUniScrollBox;
    procedure UniFormCreate(Sender: TObject);
  private
    { Private declarations }
    procedure btnBuyProductsClick(Sender: TObject);
  public
    { Public declarations }
  end;

function MainForm: TMainForm;

implementation

{$R *.dfm}

uses
  uniGUIVars, MainModule, uniGUIApplication;

function MainForm: TMainForm;
begin
  Result := TMainForm(UniMainModule.GetFormInstance(TMainForm));
end;



constructor TMyObject.Create(AOwner: TComponent);
begin
   //Главная панель
  PanForImg := TuniPanel.Create(self);      //(2)
  with PanForImg do begin
    Parent := Self;             [color=red]<-- ВОТ НА ЭТОЙ СТРОЧКЕ ОШИБКА.[/color]
    BevelInner := bvNone;
    BevelKind := bkNone;
    BevelOuter := bvRaised;
    Align := alTop;
    SetBounds(0,0,150,160);
  end;

     // Картинка
   Img := TuniImage.Create(self);           //(3)
   with Img do begin
    Parent := self;
    Align := alClient;
//    Picture.LoadFromFile(spmProduct['image_ihumbnail_link']);
    Stretch := True;
   end;

     // Метка: Наименование продукта
   LabelProdName := TUniLabel.Create(self);    //(2)
   with LabelProdName do begin
    Parent := self;
//    Caption:= spmProduct['name'];
    SetBounds(5,185,10,50);
   end;

     // Метка: Цена товара
   LabelPrice := TUniLabel.Create(self);    //(2)
   with LabelPrice do begin
//    pSumm := spmProduct['price_begin'];
//    pCurrency := spmProduct['currencies_name'];
    Parent := self;
    Font.Size := 10;
//    Caption:= pSumm + ' ' + pCurrency;
    SetBounds(5,165,10,50);
   end;

     // Кнопка: В корзину
   ButtonBuy := TUniButton.Create(self);    //(2)
   with ButtonBuy do begin
     Parent := self;
     Caption:= 'В корзину';
//      OnClick := btnBuyProductsClick;
//      ProdName:= spmProduct['name'];
     Align := alBottom;
   end;
end;


procedure TMainForm.btnBuyProductsClick(Sender: TObject);
var
  Btn: TUniButton;
  MyObject: TMyObject;
begin
  Btn := TUniButton(Sender);
  MyObject := TMyObject(Btn.Owner); 
end;


procedure TMainForm.UniFormCreate(Sender: TObject);
var
  X, Y, i: Integer;
  MyObject: array[1 .. 25] of TMyObject;

begin
  spmProduct.Close;
  spmProduct.Open;
  i := 1;
  X := 30;
  Y := 30;
  while not spmProduct.Eof do begin
    MyObject[i] := TMyObject.Create(Self);
    with MyObject[i] do begin
      Parent := UniScrollBox1;
      SetBounds(X,Y,160,250);
      Img.Picture.LoadFromFile(spmProduct['image_ihumbnail_link']);
      LabelProdName.Caption:= spmProduct['name'];
   //   pSumm := spmProduct['price_begin'];
   //   pCurrency := spmProduct['currencies_name'];
      LabelPrice.Caption:= spmProduct['price_begin'] + ' ' + pCurrency;
      ButtonBuy.OnClick := btnBuyProductsClick;
    end;
    spmProduct.Next;
    inc(i);
    inc(X,180);
    if X > 850 then begin
      inc(Y,270);
      X := 30;
    end;
  end;
end;

destructor TMyObject.Destroy;
begin
  Img.Free;
  PanForImg.Free;
  ButtonBuy.Free;
  LabelProdName.Free;
  LabelPrice.Free;
  inherited;
end;

initialization
  RegisterAppFormClass(TMainForm);

end.
...
Рейтинг: 0 / 0
25 сообщений из 26, страница 1 из 2
Форумы / Delphi [игнор отключен] [закрыт для гостей] / TPanel + TImage массив
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]