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

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

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 03.01.2018, 13:27   #1
Oskar1985
Пользователь
 
Регистрация: 26.02.2009
Сообщений: 11
По умолчанию OnClick button

Доброе время суток!

Помогите разобраться, при запуске выходит ошибка!

Цитата:
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.GetFormInst ance(TMainForm));
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 := 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(Sende r: 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.
Изображения
Тип файла: jpg error111.jpg (25.7 Кб, 64 просмотров)
Oskar1985 вне форума Ответить с цитированием
Старый 03.01.2018, 14:18   #2
Black Fregat
Программист
Участник клуба
 
Аватар для Black Fregat
 
Регистрация: 23.06.2009
Сообщений: 1,772
По умолчанию

В Дельфи нужно явно вызвать конструктор базового класса:
Код:
constructor TMyObject.Create(AOwner: TComponent);
begin
  inherited;
Black Fregat вне форума Ответить с цитированием
Старый 03.01.2018, 14:35   #3
Oskar1985
Пользователь
 
Регистрация: 26.02.2009
Сообщений: 11
По умолчанию

в классе выше указано же ведь уже
Код:
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;
Oskar1985 вне форума Ответить с цитированием
Старый 03.01.2018, 14:41   #4
Oskar1985
Пользователь
 
Регистрация: 26.02.2009
Сообщений: 11
По умолчанию

Спасибо! оказся inherited не учел
Oskar1985 вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как сделать чтоб при нажатии кнопки Enter на клавиатуре - button реагировала на событие onClick scorer123 Помощь студентам 3 27.06.2015 21:09
Если Button 1 и Button 2 нажаты - Button 3 стала активной, как? FleXik Общие вопросы Delphi 25 11.03.2015 13:52
как вызвать в процедуре OnClick другую процедуру OnClick ? ddiipp Компоненты Delphi 7 07.09.2013 16:07
создание OnClick для массива типа Button VIK_aka_TOR Помощь студентам 13 19.05.2011 16:21
Как остановить выполнение button.onclick? igabenu Общие вопросы Delphi 6 21.01.2011 23:36