Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.01.2022, 14:39   #1
Kronos913
Форумчанин
 
Регистрация: 10.02.2021
Сообщений: 627
По умолчанию Не создается диалог

Продую создать диалог в процедуре, которая не прикреплена ни к одной форме:

Код:
Procedure Test1;
var
  SD:TSaveDialog;
begin
  SD:=TSaveDialog.Create(self);
End;
И выдает ошибку компиляции, цепляясь к слову "self"

Вопрос: как создать диалог в процедуре, которая не прикреплена ни к одной форме?
Kronos913 вне форума Ответить с цитированием
Старый 28.01.2022, 14:49   #2
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

1. заменить self на nil
2. написать процедуру с параметром и заменить self на ПАРАМЕТР данной процедуры
3. сделать процедуру методом ("прикрепить" процедуру)
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 28.01.2022 в 14:54.
evg_m вне форума Ответить с цитированием
Старый 28.01.2022, 15:53   #3
Kronos913
Форумчанин
 
Регистрация: 10.02.2021
Сообщений: 627
По умолчанию

Спасибо
Код:
{Быстрый вызов SaveDialog без объекта на форме}
{ВНИМАНИЕ! Формат файла задавать без точки!! Например, 'txt'}
Function FastSaveDialog(var FileName:string; const Format :string; const StartName:string=''): boolean;
var
  SD:TSaveDialog;
  s:string;
begin
  SD:=TSaveDialog.Create(nil);
  s:=AnsiUpperCase(Format);
  SD.Filter:=s+'|*.'+Format;
  If not(StartName='') then SD.FileName:=StartName;
  If SD.Execute then begin
    FileName:=SD.FileName;
    result:=true;
    If not(rasr(FileName, Length(s))=('.'+s)) then begin
      FileName:=FileName+'.'+Format;
    end;
  end else result:=false;
  SD.Free;
end;
Использует функцию rasr
Код:
{Возвращает а+1 крайних символов строки}
function rasr(const s:string; const a:byte): string;
begin
 If (a<length(s)) then begin
  result:=AnsiUpperCase(Copy(s, length(s)-a, a+1));
 end else result:='';
end;
Kronos913 вне форума Ответить с цитированием
Старый 30.01.2022, 10:24   #4
newerow1989
Я самый любопытный
Участник клуба
 
Аватар для newerow1989
 
Регистрация: 24.07.2012
Сообщений: 1,949
По умолчанию

Цитата:
Сообщение от evg_m Посмотреть сообщение
заменить self на nil
Дополню: на Application, Form1
Я обычно так делаю.
С запрограммированным приветом, Неверов Евгений!
Сайт: http://newerow1989.ru
[Паскаль] [Delphi]
newerow1989 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не создается процесс alexprey Visual C++ 6 14.09.2011 17:48
Не создается таблица ymka2 БД в Delphi 6 29.11.2009 15:25
Не создается диалог -CrAzYMaN- Общие вопросы C/C++ 4 23.11.2009 11:06
не создается socket() isPolin C/C++ Сетевое программирование 2 24.06.2009 14:41
Кнопка не создается Манжосов Денис :) Компоненты Delphi 10 28.04.2008 17:43