DebugOutput->Lines->Add (Event_Name);
//или
DebugOutput->Lines->Strings [DebugOutput->Lines->Count-1] =
DebugOutput->Lines->Strings [DebugOutput->Lines->Count-1] + " " + Event_Name;
помогите построить алгоритм работы, и написать код
и так имеется допустим 100 событии и каждая имеет свой номер:
1 событие - 1
............
100 событие - 100
имеется RichEdit1, в котором имеется номера событий, допустим в RichEdit1 записано 1 23 45 в каждую строчку, и соответственно надо сделать эти события.
так вот загвозка. как прописать все эти 100 событий и запускать их в зависимости от того, какое событие написано в RichEdit1
заранее всем благодарен
RichEdit обязательно надо использовать? TListBox не катит? Ведь проще.
Без разницы, всё равно будет использоваться метод TStrings::Add (AnsiString).
Код:
Другое дело, представляете ли Вы себе что такое это "событие". Для Builder - это струкрура с двумя неименованными полями:
1. Указатель на объект-обработчик
2. Указатель на вызываемый метод обработчика
И обязательным параметром "Источник" - это указатель на объект, являющийся генератором события
С объектной точки зрения, вызов обработчика производится так: "Обработчик"->"Метод" ("Источник", "Прочие_параметры");
Формат объявления функции типа "обработчик события" можно посмотреть, указав билдеру найти объявление для TNotifyEvent.
Исходя из этого, следует уточнить алгоритм решения вопроса.
Я с чисто пользовательской точки зрения предположил, что события заранее известны, поэтому можно было бы сделать более простой интерфейс. Хотя, конечно, большой разницы для написания кода нет.
"Format ("%p %p %p, ARRAYOFCONST ((this, &(this->Called_Method), Sender)));"
Должен сформировать строку, содержащую три значения:
1. Адрес объекта-обработчика;
2. Адрес вызванного метода;
3. Адрес объекта-генератора.
Вот только использовать сию инфу будет........ затруднительно :D
Цитата:
RichEdit обязательно надо использовать? TListBox не катит? Ведь проще.
Цитата:
Исходя из этого, следует уточнить алгоритм решения вопроса.
ну просто имеется 100 событий.
1-допустим загрузить картинку 1.jpeg
2-345.gpeg
3-5567.jpeg
4-условие( и исходя из условия загрузка того или иного файла)
и в зависимости какое число в RichEdit1 выполнять соответсвующие события
Цитата:
и в зависимости какое число в RichEdit1 выполнять соответсвующие события
В таком случае, это не "событие", а "действие" - прошу не вводить в заблуждение неверной терминологией.
Кчлм подразумевается однотипное действие (загрузка картинки), то можно просто создать массив параметров для одной функции.
Код:
const AnsiString Files [] = {"File1.jpg", "File2.jpg", и так далее};
const int Files_Size = sizeof (Files) / sizeof (AnsiString);
///.............
TForm1::Button1Click ()
{
int Index = Edit1->Text.ToInt();
if ((Index >= 0) && (Index < Files_Size))
Image1->Picture->LoadFromFile (Files [Index]);
else throw ERangeError ("Неверный номер файла");
}
const int Files_Size = sizeof (Files) / sizeof (AnsiString);
///.............
TForm1::Button1Click ()
{
int Index = Edit1->Text.ToInt();
if ((Index >= 0) && (Index < Files_Size))
Image1->Picture->LoadFromFile (Files [Index]);
else throw ERangeError ("Неверный номер файла");
}
В общем, идея ясна.