Главная страница
    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.006 c
1-94445
BlackJack
2002-04-13 01:11
2002.04.29
Поддержка сериализации в Delphi.


14-94544
Fellomena
2002-03-21 17:43
2002.04.29
Из любопытства - кто-нибудь работал на системах класса В ?


3-94285
sany
2002-04-08 08:57
2002.04.29
надо базу данных написать для хранения информации о видео кассетх


3-94313
AlanB
2002-04-09 11:24
2002.04.29
Не работает программа под WinXP


1-94476
Vik_R
2002-04-16 10:03
2002.04.29
hint





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский