Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Система";
Текущий архив: 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.005 c
1-94427
velial
2002-04-17 22:22
2002.04.29
процедуры


1-94410
Каспер
2002-04-18 07:02
2002.04.29
Мигание на панеле задач


1-94423
Cancer
2002-04-16 10:57
2002.04.29
UpdateResource. А как в Win9x редактировать ресурсы?


1-94452
Михаил
2002-04-15 12:07
2002.04.29
Создание компонента во время работы программы


3-94269
Reporter*
2002-04-07 21:59
2002.04.29
Вопросы, связанные с Fast Report





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский