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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 16.01.2010, 18:56   #1
Marsel737
Форумчанин
 
Аватар для Marsel737
 
Регистрация: 09.11.2009
Сообщений: 669
По умолчанию Привязать процедуру к динамически созданной картинке

Всем доброго времени суток.

Подскажите где ошибка, хочу динамически созданной картинке привязать процедуру:

Код:
Img:=TImage.Create(Owner);
Img.Parent:=self;
Img.Left:=10;
Img.Top:=10;
Img.Picture.LoadFromFile('plugin.png');
Img.OnClick:=frmMain.ImgClick;
Код:
procedure TfrmMain.ImgClick(Sender: TObject);
begin
  Img.Picture.LoadFromFile('anchor.png');
end;
Выдаёт ошибку: uMain.pas(50,36) Error: Wrong number of parameters specified for call to "ImgClick"

А если так
Код:
Img.OnClick:=frmMain.ImgClick(Sender);
То ошибка:
uMain.pas(50,27) Error: Incompatible types: got "untyped" expected "<procedure variable type of procedure(TObject) of object;Register>"

П.с. пишу на лазерусе

................................... ...........

И ещё вопрос из той же оперы. У меня в цикле создаются три картинки, и для каждой картинке одна и та же процедура - это загрузка картинки, мне нужно изображение загружалось имеено в тот Image по которому кликну
Я не всегда знаю, о чем говорю, но знаю, что прав. © Мухаммед Али.
К чёрту обстоятельства. Я создаю возможности. © Брюс Ли

Последний раз редактировалось Marsel737; 16.01.2010 в 19:04.
Marsel737 вне форума Ответить с цитированием
Старый 16.01.2010, 19:32   #2
eoln
Старожил
 
Аватар для eoln
 
Регистрация: 26.04.2008
Сообщений: 2,689
По умолчанию

Цитата:
Сообщение от Marsel737 Посмотреть сообщение
Код:
Img.Left:=10;
Img.Top:=10;
Img.Picture.LoadFromFile('plugin.png');
Img.OnClick:=frmMain.ImgClick;
Код:
type
  TfrmMain = class(TForm)
    procedure ImgClick(Sender: TObject);
  private
    { Private declarations }
...
Img.OnClick:=ImgClick;
png точно открывать умеет
eoln вне форума Ответить с цитированием
Старый 16.01.2010, 19:38   #3
Marsel737
Форумчанин
 
Аватар для Marsel737
 
Регистрация: 09.11.2009
Сообщений: 669
По умолчанию

Цитата:
Сообщение от eoln Посмотреть сообщение
Код:
type
  TfrmMain = class(TForm)
    procedure ImgClick(Sender: TObject);
  private
    { Private declarations }
...
Img.OnClick:=ImgClick;
Ну эт понятно, тем не менее не работает, а вот так работает:

Код:
procedure TfrmMain.BitBtn1Click(Sender: TObject);
begin
  Img.Picture.LoadFromFile('anchor.png');
end;
Код:
Img.OnClick:=frmMain.BitBtn1.OnClick;
Цитата:
Сообщение от eoln Посмотреть сообщение
png точно открывать умеет
Умеет
Я не всегда знаю, о чем говорю, но знаю, что прав. © Мухаммед Али.
К чёрту обстоятельства. Я создаю возможности. © Брюс Ли
Marsel737 вне форума Ответить с цитированием
Старый 17.01.2010, 00:52   #4
spamer
Software Developer
Старожил
 
Аватар для spamer
 
Регистрация: 19.12.2008
Сообщений: 2,070
По умолчанию

Странно, но вот так работает:
Код:
...

  private
    { Private declarations }
    procedure proc(Sender: TObject);

...

var
  Img : Timage;

...

procedure TForm1.proc(Sender: TObject);
begin
  Img.Picture.LoadFromFile('web-team.jpg');
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
Img:=TImage.Create(self);
Img.Parent:= self;
Img.Left:=100;
Img.Top:=100;
Img.Width := 300;
Img.Height := 300;
Img.OnClick := Form1.proc;
end;
Будь проще и люди к тебе потянутся
spamer вне форума Ответить с цитированием
Старый 18.01.2010, 18:23   #5
Marsel737
Форумчанин
 
Аватар для Marsel737
 
Регистрация: 09.11.2009
Сообщений: 669
По умолчанию

spamer, скопировал твой код и попытался скомпилировать, но снова ошибка: Unit1.pas(46,26) Error: Wrong number of parameters specified for call to "proc"

Кто-нибудь киньте рабочий пример

Код:
unit Unit1; 

{$mode objfpc}{$H+}

interface

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

type

  { TForm1 }

  TForm1 = class(TForm)
    Button1: TButton;
    Image1: TImage;
    procedure Button1Click(Sender: TObject);
  private
    procedure proc(Sender: TObject);
  public
    { public declarations }
  end; 

var
  Form1: TForm1;
  Img : Timage;

implementation

{ TForm1 }

procedure TForm1.proc(Sender: TObject);
begin
  Img.Picture.LoadFromFile('RedFon.png');
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  Img:=TImage.Create(self);
  Img.Parent:= self;
  Img.Left:=100;
  Img.Top:=100;
  Img.Width := 300;
  Img.Height := 300;
  Img.OnClick := Form1.proc;
end;

initialization
  {$I Unit1.lrs}

end.
................................... .................

Проверил на делфи, всё работает, а вот на лазерусе нет
Я не всегда знаю, о чем говорю, но знаю, что прав. © Мухаммед Али.
К чёрту обстоятельства. Я создаю возможности. © Брюс Ли

Последний раз редактировалось Marsel737; 18.01.2010 в 18:37.
Marsel737 вне форума Ответить с цитированием
Старый 18.01.2010, 19:23   #6
uberchel
Участник клуба
 
Аватар для uberchel
 
Регистрация: 19.01.2009
Сообщений: 1,455
По умолчанию

Вот пример, описаны 2 события (MouseMove, OnClick):
Вложения
Тип файла: rar image.rar (1.1 Кб, 42 просмотров)
uberchel вне форума Ответить с цитированием
Старый 18.01.2010, 20:12   #7
Marsel737
Форумчанин
 
Аватар для Marsel737
 
Регистрация: 09.11.2009
Сообщений: 669
По умолчанию

uberchel, спасибо за помошь
Я не всегда знаю, о чем говорю, но знаю, что прав. © Мухаммед Али.
К чёрту обстоятельства. Я создаю возможности. © Брюс Ли
Marsel737 вне форума Ответить с цитированием
Старый 27.07.2012, 19:19   #8
pro012
Новичок
Джуниор
 
Регистрация: 27.07.2012
Сообщений: 1
По умолчанию

Img.OnClick:=@ImgClick; - в lazarus по моему так!
pro012 вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Передать Title загружаемой страницы в Caption созданной вкладки PageControl-a Verst Общие вопросы Delphi 6 24.11.2009 01:43
Событие для динамически созданной Button Dogmat Помощь студентам 8 24.07.2008 12:44
Рисование на форме созданной на WinApi N!ckeL Win Api 3 30.04.2008 19:02
События, выполняемые во время работы созданной компоненты Denager Общие вопросы Delphi 13 22.04.2008 16:48
Как выпонить действия по двойному слику на созданной таблице Tiolic Общие вопросы Delphi 2 21.06.2007 09:53