Форум: "Система";
Текущий архив: 2002.04.29;
Скачать: [xml.tar.bz2];
ВнизПодскажите что я не так сделала.... Найти похожие ветки
← →
Diana (2002-01-30 21:32) [0]Button1.OnClick:=INI.ReadString("Buttons","AddAction","");
← →
Фэ (2002-01-30 22:09) [1]procedure TSForm.Button1Click(Sender: TObject);
var s: string;
begin
s := INI.ReadString("Editor", "FontName", "ERROR"));
end;
← →
Diana (2002-01-30 22:30) [2]А алтернативных решений есть?
← →
Фэ (2002-01-30 22:48) [3]Вашему или моему ?
← →
SoftOne (2002-01-31 02:56) [4]Имхо, имеем ситуацию, подобную "Digitman & Лана Розанова".
Но, при всей схожести, здесь "Фе", Вы весьма не поняли вопрос, и ответили не туда.
2 Diana
Альтернативных решений есть, если Вы поймете, что в строке
Button1.OnClick:= "свойству" объекта TButton присваивается "адрес" процедуры, а не её имя.
← →
#Dimedrol (2002-01-31 09:46) [5]Если я все правильно понял Вы пытаетесь сохранить имя Action-а
в INI-файле. Если так предлогаю следующее:
var
iIndex: Integer;
sActName: string;
INI: TIniFile;
begin
if ActionList1.ActionCount > 0 then
begin
sActName := INI.ReadString("Buttons","AddAction","");
for iIndex := 0 to ActionList1.ActionCount - 1 do
if ActionList1.Actions[iIndex].Name = sActName then
Button1.OnClick := ActionList1.Actions[iIndex].OnExecute;
end;
end;
← →
Nicolas_ (2002-01-31 13:18) [6]Событию нельзя присваивать ЛЮБУЮ процедуру. Можно присваивать только событие другого объекта, т.е. b1.OnClick := Form1.OnClick;
Нужно делать вариант Фэ.
← →
kaif (2002-01-31 14:55) [7]Я вообще не пойму, что хочет сделать Diana.
Событию OnClick можно присвоить любой метод, определенный как
TNotifyEvent. Насколько я помню:
TNotifyEvent = procedure(Sender: TObject) of object;
Поэтому, если в компоненте формы (можно в секции private) вписать:
procedure MMMClick(Sender: TObject);
Затем вписать в секции implementation модуля:
procedureTForm1.MMMClick(Sender: TObject) of object;
begin
//
end;
То потом можно в любом месте, например, в обработчике OnCreate формы вписать простое присвоение:
Button1.OnClick := MMMClick;
Если столько сделать, то дальше, наверно, можно будет понять чего, собственно, хочется...
← →
kaif (2002-01-31 14:58) [8]Извиняюсь, проглядел: в implementation нужно без фразы
of object.
← →
Diana (2002-01-31 20:51) [9]Вся проблема втом, что все кнопки создаются динамический во время выполнений программы и после окончание работы все параметры этих кнопок записываются в INI файл, а при следующем старте программы, программа проверяет если INI файл, если есть то начинает читать все секций и ключи, и если в ключах указана действие то программа сначало создает кнопку а затем читает Caption а потом и Action.
← →
iZEN (2002-01-31 22:41) [10]to Diana.
Да Вам надо в Java переходить с такими требованиями: там возможна сериализация и десериализация компонентов с сохранением динамического контекста выполнения.
← →
Mastadon (2002-02-01 10:34) [11]
Не очень понял вопроса. Но может вам поможет сохранять компоненты целиком ?
Для этого можно использовать сам механизм хранения компонетов Дельфи, то есть как он в .dfm сохраняет, так же ты можешь и в любой файл сохранить, а потом прочитать.
Посмотри TStream.ReadComponent и TStream.WriteComponent
This example shows how to use the built-in VCL component streaming support to convert any component into a string and convert that string back into a component.
function ComponentToString(Component: TComponent): string;
var
BinStream:TMemoryStream;
StrStream: TStringStream;
s: string;
begin
BinStream := TMemoryStream.Create;
try
StrStream := TStringStream.Create(s);
try
BinStream.WriteComponent(Component);
BinStream.Seek(0, soFromBeginning);
ObjectBinaryToText(BinStream, StrStream);
StrStream.Seek(0, soFromBeginning);
Result:= StrStream.DataString;
finally
StrStream.Free;
end;
finally
BinStream.Free
end;
end;
function StringToComponent(Value: string): TComponent;
var
StrStream:TStringStream;
BinStream: TMemoryStream;
begin
StrStream := TStringStream.Create(Value);
try
BinStream := TMemoryStream.Create;
try
ObjectTextToBinary(StrStream, BinStream);
BinStream.Seek(0, soFromBeginning);
Result := BinStream.ReadComponent(nil);
finally
BinStream.Free;
end;
finally
StrStream.Free;
end;
end;
Страницы: 1 вся ветка
Форум: "Система";
Текущий архив: 2002.04.29;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.007 c