Вниз
Скачать: CL | DM;

Подскажите что я не так сделала....   Найти похожие ветки 

← →
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 вся ветка

Скачать: CL | DM;



Память: 0.48 MB
Время: 0.007 c
3-94305
Uncle SAM
2002-04-09 00:40
2002.04.29
A не работет такая схема......


14-94539
kaif
2002-03-21 00:05
2002.04.29
Как купить D5 Pro?


3-94278
Malyatko
2002-04-08 12:48
2002.04.29
Добавление в базу данных.


14-94555
Tsatur Soft
2002-03-19 21:57
2002.04.29
Поиск по реестру


1-94486
Up
2002-04-16 15:15
2002.04.29
Custom Menu




   Наверх