Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
3-3265
New123
2002-08-11 02:04
2002.09.02
Порядок записей по умолчанию в таблице


1-3401
NeyroSpace
2002-08-22 14:14
2002.09.02
Хелп! НЕ ПОНИМАЮ В ЧЕМ ДЕЛО !


1-3373
EugenCFG
2002-08-21 13:06
2002.09.02
Работа с файлом...


3-3283
xenon
2002-08-12 19:06
2002.09.02
Импорт из текстового файла в DBF


3-3298
velk
2002-08-13 12:11
2002.09.02
Подскажите как вытащить данные из таблицы MySQL?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский