Форум: "Основная";
Текущий архив: 2002.09.02;
Скачать: [xml.tar.bz2];
ВнизКак создать процедуру на кнопку, которой ещё нет.... Найти похожие ветки
← →
EugenCFG (2002-08-20 11:11) [0]В процессе выполнения программы я добавляю к MainMenu NewItem(Tmenuitem)... Кнопка добавлена... Теперь пользователь жмет на неё и должно произойти событие, например Label1.Caption:="Good";...
И похожий вопрос на эту же тему... есть PageControl, а на нем TabSheet1. Теперь пользователь создает ещё 1 TabSheet... причём c RichEdit... Теперь при нажатии Enter определенный текст должен появиться в новом RichEdit... Вопрос как мне все эти имена просчитать??? Как на них ссылаться ведь пользователь может создать несколько десятков таких TabSheet(ов)
Кто ответит БОЛЬШОЕ СПАСИБО!!!!!!! Потому что я уже не могу решить эту проблему несколько недель...
← →
Skier (2002-08-20 11:51) [1]>EugenCFG
Примерно так :
TForm1 = class(TForm)
Label1: TLabel;
MainMenu: TMainMenu;
private
procedure MenuItemClick(Sender : TObject);
end; //TForm1
procedure TForm1.MenuItemClick(Sender: TObject);
begin
Label1.Caption:="Good";
//and your extra code goes here...
end;
Создание :
var
ANewMenuItem : TMenuItem;
begin
ANewMenuItem := TMenuItem.Create(MainMenu);
ANewMenuItem.Caption := "New menu item";
ANewMenuItem.OnClick := MenuItemClick; //твоё событие...
MainMenu.Items.Add(ANewMenuItem);
//..................
end;
← →
EugenCFG (2002-08-20 12:22) [2]Спасибо!
А на второй вопрос вы не знаете ответа???
← →
Skier (2002-08-20 12:24) [3]>EugenCFG
> А на второй вопрос вы не знаете ответа???
Не очень я понял проблему.
Расскажи по-подробней или по-проще :)
← →
EugenCFG (2002-08-20 12:52) [4]хорошо....
Вот у меня в PageControl есть одна закладка.... на ней я разместил RichEdit... Далее.. Вне Page Control находится Edit... я написал в нем текст нажал отправить и текст отображается в Richedit1 ... ВОТ! Теперь пользователь создает как бы новый сеанс : добавляется новая закладка и на нем RichEdit2 (имя не обязательно такое...)... ну так вот создать то я наверное создам (программно... ) а вот текст отсылать не смогу, потому что не знаю толком не имени, ничего...
Может проблема то параллельная с MainMenu кстати... Как вы мне показали всё работает... но когда я более 1 сделаю NewItem пытаюсь снять их caption а не получается... ошибку выдает...хотя изначально указал... здесь я думаю начать работать с файлами... в кот. я буду фиксировать добавленные кнопки и их свойства.. может быть также стоит поступить и с закладками....
Не знаю... если вы поняли чё нить... из этого, то я буду рад..
← →
Skier (2002-08-20 13:00) [5]>EugenCFG
> ...не знаю толком не имени, ничего...
А зачем имя ? У тебя же в этом случае будет указатель на
созданный RichEdit, т.е.
ARichEdit := TRichEdit.Create(...);
и здесь ты уже имеешь указатель на объект ARichEdit,
так что я не совсем понял зачем имя.
> ...NewItem пытаюсь снять их caption а не получается
Покажи как пытаешься...
← →
EugenCFG (2002-08-20 13:10) [6]procedure TForm1.MenuItemClick(Sender: TObject);
var MenuItem : TMenuItem;
begin
Label1.Caption:=MenuItem.Caption
я добавляю следующим образом...
RichEdit1.Lines.Add(Msg);
Надо же не забывать про все закладки... пользователь может их переключать... и только в зависимости от выбранной закладки добавляется текст в тот или иной RichEdit....
Не пойму как это сделать...
← →
Skier (2002-08-20 13:15) [7]>EugenCFG
procedure TForm1.MenuItemClick(Sender: TObject);
begin
//......................
if Sender is TMenuItem then
Label1.Caption:=TMenuItem(Sender).Caption
//......................
> Не пойму как это сделать...
RichEdit на закладке только один ?
← →
EugenCFG (2002-08-20 13:32) [8]на закладке да...
кол-во закладок = кол-во Ричев...
← →
Skier (2002-08-20 13:42) [9]>EugenCFG
>
> кол-во закладок = кол-во Ричев...
Тогда примерно так :
procedure TForm1.Button2Click(Sender: TObject);
function GetActiveRichEdit(const APageControl : TPageControl) :
TRichEdit;
var
ii : Integer;
begin
Result := nil;
if (APageControl = nil) or
(APageControl.PageCount <= 0) then Exit;
with APageControl.ActivePage do begin
for ii := 0 to ControlCount - 1 do begin
if Controls[ii] is TRichEdit then begin
Result := TRichEdit(Controls[ii]);
Exit;
end; //for
end; //for
end; //with
end; //GetActiveRichEdit
procedure SendMsgToActiveRichEdit(const APageControl : TPageControl;
const AMsgText : String);
var
ARichEdit : TRichEdit;
begin
if AMsgText = EmptyStr then Exit;
ARichEdit := GetActiveRichEdit(APageControl);
if ARichEdit <> nil then begin
ARichEdit.Lines.Add(AMsgText);
end; //if
end; //SendMsgToActiveRichEdit
begin
SendMsgToActiveRichEdit(PageControl1, "Hello, world !");
end;
← →
EugenCFG (2002-08-20 13:47) [10]Блин, да вы гений...!!!!!!!
за 10 мин состряпать...
Большое спасибо вам...!!!!!
Буду пробовать...
Я тут не совсем понял участок кода... Поясните, если вам не трудно....
if Sender is TMenuItem then //Sender меня смущает.... Это показывает как бы активный итем???? или нет??
← →
Skier (2002-08-20 13:53) [11]>EugenCFG
Если просто, то : Sender - это тот Item, на который ты кликнул
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2002.09.02;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.007 c