Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2002.10.24;
Скачать: [xml.tar.bz2];

Вниз

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

 
Юрий К   (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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.008 c
4-78728
Acidy
2002-09-10 15:31
2002.10.24
Есть такой трабл про консольное при.......Прошу помогите ......


14-78585
Esu
2002-10-01 20:55
2002.10.24
[Анти]киллер


1-78365
msdn1
2002-10-14 22:38
2002.10.24
HTML


1-78480
Mishka
2002-10-13 10:21
2002.10.24
mciSendStringA из winmm.dll


8-78544
Alexfdfdfd
2002-06-26 01:17
2002.10.24
Короче задача, нужно взять файл типа *.bmp





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