Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Обработчик события, для динамического компонента 
V
    Опции темы
Addmin
Дата 12.8.2007, 19:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 803
Регистрация: 3.2.2006
Где: сослан в Сибирь

Репутация: нет
Всего: 15



Здравствуйте!

Ситуация:
Есть динамически создаваемые компоненты (RichEdit'ы на вкладках PageControl'а). Требуется присвоить им событие OnKeyDown (для обработки стандартных функций редактирования: Cut, Copy...)

Проблема:
Я не представляю, как это можно сделать smile

Буду рад любой помощи по вопросу! Заранее спасибо!


--------------------
PM MAIL   Вверх
ivan219
  Дата 12.8.2007, 19:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1121
Регистрация: 19.11.2005
Где: Планета земля

Репутация: 2
Всего: 12



Ну так создай обработчик отдельно а когда создаш компонент присовой ему этот обработчик:
Код

 Edit1.OnKeyDown := FOnKeyDown;

PM MAIL ICQ   Вверх
ALeXandrK
  Дата 12.8.2007, 19:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 342
Регистрация: 31.1.2007
Где: Санкт-Петербург

Репутация: 3
Всего: 6



Напиши метод, который будет делать что-ты хочешь. 

Твоя процедура:
Код

procedure MyKeyDown(Sender: TObject; var Key: Word;  Shift: TShiftState);
begin
 ....
end;


Ну и при создании компонента пишешь:
Код

...
  Edit1.OnKeyDown :=  MyKeyDown;
...


Вот и все. Теперь при нажатии клавиши будет выполняться твоя процедура MyKeyDown.

van219: эх... опередил smile 

Это сообщение отредактировал(а) ALeXandrK - 12.8.2007, 20:20


--------------------
Богат не/ни тот, у кого много, а тот, кому хватает
PM WWW   Вверх
volvo877
Дата 12.8.2007, 19:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2073
Регистрация: 15.11.2004

Репутация: 14
Всего: 116



Цитата(ALeXandrK @  12.8.2007,  19:33 Найти цитируемый пост)
Ну и при создании компонента пишешь:

Ну, и получишь ошибку. Это должен быть метод класса, или надо делать дополнительные телодвижения, чтобы простую процедуру назначить обработчиком...
PM MAIL   Вверх
sentry
Дата 12.8.2007, 20:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Code Monkey
*


Профиль
Группа: Участник
Сообщений: 133
Регистрация: 29.1.2007
Где: Москва

Репутация: 2
Всего: 10



Да, будет ошибка, потому что должен еще передаваться скрытый параметер Self. Так что надо либо создать свой класс и поместить туда процедуру, либо дописать процедуру в секцию какого-нибудь уже объявленного класса, либо of object;
PM MAIL   Вверх
Addmin
Дата 12.8.2007, 20:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 803
Регистрация: 3.2.2006
Где: сослан в Сибирь

Репутация: нет
Всего: 15



Ну, возможно, дополнительные телодвижения делать вовсе и не надо, ибо всё работает по советам  ALeXandrK иivan219 smile Всем спасибо!



--------------------
PM MAIL   Вверх
Sanchezzz
  Дата 12.8.2007, 20:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1670
Регистрация: 19.11.2006
Где: Voronezh

Репутация: 5
Всего: 60



добавлю одно 


когда создоеш закладку присваивай ему парент и как 
выше показал ALeXandrK
я создаю закладки так и присваиваю все при создание закладки
мини пример

Код

function Tform1.CreateTabBrowser(sURL, sCaption: string): TTabSheet;
var
  ts: TTabSheet;
  WB: TWebbrowser;
begin
  // Create a new TabSheet
  ts := TTabSheet.Create(PageControl);
  Result := ts;
  try
    // Assign TTabSheet Properties
    ts.PageControl := PageControl;
    ts.Parent := PageControl;
    ts.Caption := sCaption;
    ts.PageIndex := PageControl.ActivePageIndex + 1;

    // Create a TWebbrowser instance
    WB := TWebbrowser.Create(ts);

    // put TWebbrowser on TTabSheet
    TControl(WB).Parent := ts;
    // or:   Ts.InsertControl(WB);

    // Assign Webbrowser Properties
    WB.Align := alClient;
    WB.Silent := True;
    WB.Visible := True;

    PageControl.ActivePage := ts;

    // Assign Webbrowser Events
    WB.OnProgressChange := WebBrowser1ProgressChange;
    WB.OnStatusTextChange := WebBrowser1StatusTextChange;
    WB.OnTitleChange := WebBrowser1TitleChange;
    WB.OnNewWindow2 := WebBrowser1NewWindow2; // это присваиваемые процедуры 
    WB.OnCommandStateChange := WebBrowser1CommandStateChange;  // это присваиваемые процедуры 
    WB.OnDownloadComplete := WebBrowser1DownloadComplete;  // это присваиваемые процедуры 
    WB.OnDocumentComplete := WebBrowser1DocumentComplete;// это присваиваемые процедуры 
    WB.FNavForward := False;
    WB.FNavBack := False;
    // Navigate to a URL
    if Trim(sURL) <> '' then
    begin
      WB.Navigate(sURL);
      WaitForBrowser(WB);
    end;
  except
    ts.Free;
  end;
end;

пример не на RichEdit ну перепишешь под себя smile 


--------------------
Понравился ответ "+" по репе, не забываем закрывать тему, заказы в LS.
PM MAIL Skype GTalk   Вверх
Addmin
Дата 12.8.2007, 20:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 803
Регистрация: 3.2.2006
Где: сослан в Сибирь

Репутация: нет
Всего: 15



Большое спасибо, Sanchezzz, возьму на заметку smile 

Это сообщение отредактировал(а) Addmin - 12.8.2007, 20:27


--------------------
PM MAIL   Вверх
Yanis
Дата 13.8.2007, 09:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2937
Регистрация: 9.2.2004
Где: Москва

Репутация: 72
Всего: 111



Цитата(volvo877 @  12.8.2007,  20:49 Найти цитируемый пост)
Это должен быть метод класса

Не только класса, надо отметить.


--------------------
user posted image *щёлк*
PM MAIL WWW ICQ   Вверх
sentry
Дата 13.8.2007, 10:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Code Monkey
*


Профиль
Группа: Участник
Сообщений: 133
Регистрация: 29.1.2007
Где: Москва

Репутация: 2
Всего: 10



Подробнее обо всем этом тут.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0843 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.