Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Для новичков > продцедура обработки события в Delphi 2010


Автор: supervladislav 19.9.2012, 16:04
Вставил в своё приложение две кнопки SaveFileDialog и OpenFileDialog ,кликаю по ним ,чтобы создать продцедуру , а Delphi открывает само окно выбора/сохранения файлов , данная  функция в Delphi 7 была доступна по двойному щелчку на эллемент формы.
Кто пользуется Delphi 2010 подскажите , как вызвать продцедуру обработки в ответ на событие? 

Автор: northener 19.9.2012, 16:14
Цитата(supervladislav @  19.9.2012,  16:04 Найти цитируемый пост)
Вставил в своё приложение две кнопки SaveFileDialog и OpenFileDialog ,кликаю по ним ,чтобы создать продцедуру


Цитата(supervladislav @  19.9.2012,  16:04 Найти цитируемый пост)
как вызвать продцедуру обработки в ответ на событие?

Обработка какого события интересует?

Автор: Данкинг 19.9.2012, 16:15
Цитата(supervladislav @  19.9.2012,  17:04 Найти цитируемый пост)
а Delphi открывает само окно выбора/сохранения файлов , данная  функция в Delphi 7 была доступна по двойному щелчку на эллемент формы.

Да и в D7 аналогично.

Автор: supervladislav 19.9.2012, 17:11
northener, Данкинг,  событие срабатывающее при выборе файла.

Автор: northener 19.9.2012, 17:24
Цитата(supervladislav @  19.9.2012,  17:11 Найти цитируемый пост)
событие срабатывающее при выборе файла. 

Такого события нет и никогда не было. О том выбрал ли пользователь файл или не выбрал свидетельствует результат возвращенный в методе Execute.

Автор: Данкинг 19.9.2012, 17:43
OpenDialog.Execute оно называется.

Автор: Чучмек 20.9.2012, 20:09
Цитата(northener @  19.9.2012,  17:24 Найти цитируемый пост)
Такого события нет и никогда не было

А какже OnCanClose???
Назначается как и все. В ObjectInspector на вкладке Events двойным щелчком по соответствующему полю.

Автор: supervladislav 20.9.2012, 20:12
northener, Данкинг. Я имел ввиду  ,как можно сгенерировать продцедуру ,так чтобы она появилась в коде моего модуля и в типах.
В D7 это было очень просто- двойной счелчок мыши и всё.

 

Автор: Данкинг 20.9.2012, 20:22
If opendialog.execute then...

Автор: northener 20.9.2012, 21:06
Цитата(supervladislav @  20.9.2012,  20:12 Найти цитируемый пост)
В D7 это было очень просто- двойной счелчок мыши и всё.

Ты ошибаешься. Такого не было никогда.
Вот для TButton, например, так и есть, потому что у него есть событие OnClick. А для TOpenDialog, TSaveDialog события OnClick нет и быть не может. Ибо они оба компоненты невизуальные.

Добавлено через 48 секунд
Цитата(Чучмек @  20.9.2012,  20:09 Найти цитируемый пост)
А какже OnCanClose???

Имхо автору нужно не оно.

Автор: northener 21.9.2012, 02:38
Цитата(Чучмек @  20.9.2012,  20:09 Найти цитируемый пост)
А какже OnCanClose???

И кстати. Я просто не понимаю зачем это событие в TOpenDialog/TSaveDialog вообще нужно?

Автор: supervladislav 21.9.2012, 10:12
northener, не очень просто догнал можно ли сделать открытие файлового диалога через tbottom?
 

Автор: Чучмек 21.9.2012, 10:51
Цитата(northener @  21.9.2012,  02:38 Найти цитируемый пост)
И кстати. Я просто не понимаю зачем это событие в TOpenDialog/TSaveDialog вообще нужно?

http://docwiki.embarcadero.com/Libraries/XE2/en/Vcl.Dialogs.TOpenDialog.OnCanClose
Цитата

Возникает, когда пользователь пытается закрыть окно без отмены. 


Цитата(supervladislav @  21.9.2012,  10:12 Найти цитируемый пост)
можно ли сделать открытие файлового диалога через tbottom?

Код

procedure TForm1.Button1Click(Sender: TObject);
begin
if opendialog1.Execute then
 MessageBox(0,PChar('Выбран файл '+opendialog1.FileName),'',0) else
 MessageBox(0,'Файл не выбран',nil,0);
end;

Автор: Данкинг 21.9.2012, 10:52
Цитата(supervladislav @  21.9.2012,  11:12 Найти цитируемый пост)
tbottom?

TButton т.е.?
Код

procedure TForm1.Button1Click(Sender: TObject);
begin
 if opendialog.execute then showmessage('Йа окошко');
end;

Автор: northener 22.9.2012, 00:49
Цитата(Чучмек @  21.9.2012,  10:51 Найти цитируемый пост)
Цитата(northener @  21.9.2012,  02:38 Найти цитируемый пост)
И кстати. Я просто не понимаю зачем это событие в TOpenDialog/TSaveDialog вообще нужно?

OnCanClose
Цитата

Возникает, когда пользователь пытается закрыть окно без отмены. 


Вот именно это и не понимаю. Закрытие диалогового окна "крестиком", имхо всегда по определению тождественно нажатию кнопки "Cancel". 

Автор: bems 22.9.2012, 01:38
Цитата(northener @  22.9.2012,  00:49 Найти цитируемый пост)
Закрытие диалогового окна "крестиком", имхо всегда по определению тождественно нажатию кнопки "Cancel".
да, и в этот момент можно проверить допустим ли выбранный файл

Автор: northener 22.9.2012, 02:51
Цитата(bems @  22.9.2012,  01:38 Найти цитируемый пост)
да, и в этот момент можно проверить допустим ли выбранный файл

bems, какой к лешему "выбраный файл" и его "допустимость", если пользователь отказался его выбирать? И даже вообще отказался выбирать какой-либо файл?

Автор: bems 22.9.2012, 02:58
Прочитай хелп уже. Там англицким по белому написано что событие возникает при закрытии диалога без отмены

Автор: supervladislav 22.9.2012, 18:44
Данкинг, 
Мне не совсем ясно было ,какой вобще командой открыть окно, 
Код

opendialog1.Execute

А скажите сам контроль надо перетаскивать , а если надо то как его можно скрыть?

Автор: supervladislav 22.9.2012, 19:07
northener, Зы ,а как проверить булевое значение вот тут 
Мне прежде чем появляется путь к файлу сначала открывается окно добавления файла ,я его выбираю ,потом как только я выбираю файл мне 
открывается ещё одно окно.

Код

if OpenDialog1.Execute then
    begin
    OpenDialog1.Execute;
    ShowMessage(OpenDialog1.FileName);
    end;


Автор: Данкинг 22.9.2012, 19:07
Цитата(supervladislav @  22.9.2012,  19:44 Найти цитируемый пост)
А скажите сам контроль надо перетаскивать , а если надо то как его можно скрыть? 

Кладёшь его на форму как обычно. Но при работе программы его не видно.

Добавлено через 44 секунды
Цитата(supervladislav @  22.9.2012,  20:07 Найти цитируемый пост)
Мне прежде чем появляется путь к файлу сначала открывается окно добавления файла ,я его выбираю ,потом как только я выбираю файл мне 
открывается ещё одно окно.

Ещё раз.

Автор: supervladislav 22.9.2012, 19:48
Данкинг,  да ещё раз , после того как я убрал 
Код

OpenDialog1.Execute;

 сейчас вобще всё отрубилосЬ
вроде как.

Checking project dependencies...
Compiling Project2.dproj (Debug, Win32)
dcc command line for "Project2.dpr"
  
Failed
Elapsed time: 00:00:00.4
А как понять в какой строке ошибка?

Код

if OpenDialog1.Execute then
    begin
    
    ShowMessage(OpenDialog1.FileName);
    end;

  end;


Добавлено через 8 минут и 24 секунды
Данкинг, northener, OpenDialog надо объявлять в типах пока незабыл  

Автор: Данкинг 22.9.2012, 20:05
Цитата(supervladislav @  22.9.2012,  20:48 Найти цитируемый пост)
OpenDialog надо объявлять в типах пока незабыл  

Просто кидаешь его как компонент, больше с ним ничего делать не требуется.

Автор: supervladislav 22.9.2012, 20:12
Данкинг, о не оно было  объявлено как компонент всё впорядке.
Так у когонибудь есть какиенибудь соображения на этот счёт.
Как кстате скрыть саму кнопку OpenDialog Скрыть?
При условии ,что я буду использовать свою кнопку типа Tbottom.

Автор: northener 23.9.2012, 00:04
Цитата(supervladislav @  22.9.2012,  20:12 Найти цитируемый пост)
Так у когонибудь есть какиенибудь соображения на этот счёт.

Есть. Объясни простыми человеческими словами свою задачу. Не проблему, а именно задачу! Зачем тебе нужно вызывать диалог открытия/записи файла?

Добавлено через 14 минут и 53 секунды
Цитата(bems @  22.9.2012,  02:58 Найти цитируемый пост)
Прочитай хелп уже.

Прочитал. Теперь понятно для чего это событие "нужно". 
Но в своих проектах это событие использовать не собираюсь.

Автор: supervladislav 23.9.2012, 12:34
northener, да разобрался ,спасибо ,но вобще о некотрых деталях говорить надо.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)