Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.04.29;
Скачать: 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 вся ветка

Текущий архив: 2002.04.29;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.008 c
1-94429
ppp
2002-04-18 03:54
2002.04.29
Сворачивание окна в TaskBar


3-94301
SkyR
2002-04-09 08:32
2002.04.29
SQL - запрос проблемы...


3-94297
Yuraz
2002-04-06 15:53
2002.04.29
Ребят, кто писал базу для магазина, нужна организация таблиц


3-94339
Dmitry Zubtsov
2002-04-09 18:25
2002.04.29
Библиотека/компоненты для работы с базами FoxPro без BDE


3-94264
Konuhov Sergey
2002-04-02 18:07
2002.04.29
Как заблокировать несколько записей в InterBase