Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.10.24;
Скачать: CL | DM;

Вниз

Динамическое создание компонентов   Найти похожие ветки 

 
Юрий К   (2002-10-13 23:51) [0]

Уважаемые мастера!

Есть модуль ( без формы ), потребовалось вызвать SaveDialog
пишу:

uses Dialogs;

var S:TSaveDialog;
begin
S:=TSaveDialog.Create(self);
...

а компилятор этот self напрочь признавать не хочет!
и не позволяет использовать SaveDialog из модуля c формой
как быть?
Заранее спасибо!


 
Billy ©   (2002-10-14 00:34) [1]

А что такое по-твоему этот self? Если ты не знаешь/забыл, то self - это указатель на конкретный экземпляр класса, вызвавшего какой-либо метод этого класса.
В твоем случае можно использовать nil вместо self, но тогда ты сам будешь следить за его уничтожением.


 
Юрий Зотов ©   (2002-10-14 00:51) [2]

А с чего бы компилятору признавать необъявленную переменную Self?

В методах классов Self - это неявно передаваемый параметр и о нем компилятор знает. Но это только в методах классов, а за их пределами Self ничего не означает, это обычный идентификатор, не более.

Вместо Self можно использовать nil. Только надо помнить, что тогда компонент останется без владельца, а это значит, что удалять его тоже нужно ручками.

Если диалог вызывается из нескольких мест, то удобно написать функцию - оболочку, типа такой:

function GetSaveFileName(...): string;
begin
with TSaveDialog.Create(nil) do
try
... // Настройка диалога
if Execute then Result := FileName else Result := ""
finally
Free
end
end;

Вызов:

FileName := GetSaveFileName(...);
if FileName <> "" then ... // Запись файла


 
Юрий К   (2002-10-14 20:50) [3]

Еще раз большое спасибо за подробное разъяснеие! :))



Страницы: 1 вся ветка

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

Наверх




Память: 0.47 MB
Время: 0.017 c
14-78660
kaif
2002-10-04 18:55
2002.10.24
Felix Metall


1-78402
amo
2002-10-14 16:33
2002.10.24
раскладка клавиатуры


14-78610
Игорь
2002-09-26 15:50
2002.10.24
Delphi 7?


3-78240
Veronika
2002-10-01 09:30
2002.10.24
В IB 5.6 был wisql32, куда он подевался в IB 6 ??


6-78573
ППавел
2002-08-23 12:10
2002.10.24
Поговорим о почте....