![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#16
|
||||
|
||||
|
Обычно для этого используют функции/процедуры с одним именем и разными входными параметрами.
|
|
#17
|
||||
|
||||
|
procedure ... overload;
|
|
#18
|
||||
|
||||
|
Я надеялся ТС сам до этого дойдёт.
|
|
#19
|
|||
|
|||
|
Цитата:
Я задал вопрос именно потому, что если я буду вызывать то что необходимо в каждой кнопке\пункте меню, то получится много лишнего кода, вот я и подумал, что через ActionList можно сделать общий Action для кнопок и меню, но столкнулся с проблемой передачи разных параметров. А писать еще одну функцию лишь для приёма параметров, это как-то не целесообразно. Я написал что выполнить действие, но это было лишь упрощение, в действительности же там не одна строка кода ![]() |
|
#20
|
||||
|
||||
|
Назначаешь одной кнопке процедуру где идёт выполнение кода, остальные кнопки ссылаются на эту же процедуру. Немного напоминает действие ActionList-а.
|
|
#21
|
||||
|
||||
|
вообще не понятно зачем тут ActionList?
Код:
type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
Button3: TButton;
procedure ButtonClick(Sender: TObject);
...
procedure TForm1.ButtonClick(Sender: TObject);
begin
// Sender
end;Код:
object Button1: TButton
OnClick = ButtonClick
end
object Button2: TButton
OnClick = ButtonClick
end
object Button3: TButton
OnClick = ButtonClick
end |
|
#22
|
||||
|
||||
|
Цитата:
1-й вариант одназначно, так как в случае дальнейшей модификации кода не нужно будет править его в нескольких местах + удобнее работать с хоткеями, капшинами и т.п. |
| Этот пользователь сказал Спасибо ~TB~ за это полезное сообщение: | ||
Yo_Asakyra (17.05.2012)
| ||
|
#23
|
|||
|
|||
|
Добрый день.
Возникла мистическая ситуация: При записи данных в БД все поля кроме BLOB (ArrayOfCRC указан как WideString т.к. заношу в него строку) заносятся нормально, а данные в BLOB поле заносятся непонятно по каким правилам. Например: Заношу 6 записей в БД, у некоторых BLOB заполнен, а у некоторых - нет. Помогите разобраться Работаю через FIB+ компоненты. В частности TpFIbDataBase, TpFiBDataSet и TpFIbTransaction. Приведённым ниже кодом я заполняю БД (Interbase, созданная в InterBase & FireBird Manager'e 3.3.0.2). Функции ExtractFileNameEx и CteateCRCArray работают корректно. P.S. в View дебагера смотрел "ParamByName('ArrayOfCRC').AsWideString" тоже все работает нормально. Код:
procedure TMainForm.InsertIntODBClick(Sender: TObject);
var
vTextLengh : Word;
begin
with DataModuleX.DataSet do
try
close;
if not prepared then
Prepare;
with DataModuleX.DataSet.QInsert do
Try
ParamByName('NameOfText').AsString := (FileOpen.Dialog.FileName, True);
ParamByName('ArrayOfCRC').AsWideString := CteateCRCArray(GlobalCanonizedText, 980, Configuration.WordsInShingle.Value, Configuration.NormalDoc.Checked);
ParamByName('TextLength').AsInteger := vTextLengh;
ExecQuery;
finally
QInsert.Params.ClearValues;
DataModuleX.MainTransaction.Commit;
end;
Except
on E : Exception do
ShowMessage(E.ClassName+' Ошибка'+E.Message);
End;
End;Структура БД: ![]() TextId - Первичный ключ. NameOfText - Уникальный. Нужели никто не знает в чём может быть причина? Последний раз редактировалось Yo_Asakyra, 19.05.2012 в 01:07. |