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


Автор: -=Ustas=- 21.1.2005, 22:32
Мое почтение всем!!!
Я сразу извиняюсь, и прошу не ругать, за этот ламерский вопрос. Я в Delph-ях только начал разбираться. Помогите, пожалуйста в моей проблеме, ее суть такова:
Есть БД - MSAccess. Есть форма для ввода данных в эту БД, а последнюю строку в этой форме незнаю как реализовать, типа:

------------------ поле DBEdit
------------------ поле DBEdit
------------------ поле DBEdit
------------------ поле DBEdit
------------------ поле DBEdit кнопка "Обзор" - последняя строка
кнопка "Внести"

Вот. Т.е. мне нужно чтобы было текстовое поле, а рядом с ним кнопка "Обзор",
наподобие:
http://www.andropov-cbs.ru/sample.jpg
которая будет вызывать окошко "Открытие фала", следовательно, после выбора файла, его полный путь дожен появиться в этом самом текстовом поле. Затем как нажимается кнопка "Внести", все данные из текстовых полей, естественно, отправляются в БД, а этот файл копируется в определенную директорию.
Сразу хочу сказать (если это важно), вывод базы делаю с помощью ADO и DBGrid.
Плиз, помогите, только какой-нибудь легкий и понятный алгоритм (для начинающего).
smile или же киньте линк, где можно прочитать по данной теме.
Заранее всем благодарен, спасибо!

Автор: Дрюча 21.1.2005, 22:37
А про что вопрос? Про диалог? Тогда во вкладку Dialogs, а там openDialog или SaveDialog, а про это уже есть на этом форуме!!!

Автор: rMaveric 21.1.2005, 22:48
Так есть несколько возможных вариантов...

Но все это настолько стандартно что я могу порекомендовать просто купить самоучебник по Делфи и начать с него... Сразу станет проще.... Начни с глав "Диалоги", и "Работа с БД"... для твоего приложения этого хватит....

Автор: -=Ustas=- 22.1.2005, 03:55
А может ссылку на какую-нибудь книгу дадите, если не хотите пояснить "здесь и сейчас"?
Буду вечно благодарен!!!
Спасибо!!!

Автор: Akella 22.1.2005, 10:22
Кидаешь на форму TOpenDialog с закладки Dialogs. В событии нажатия на кнопку вставь это:
Код

 if OpenDialog1.Execute then
   Edit1.Text:=OpenDialog1.FileName;

Автор: -=Ustas=- 24.1.2005, 20:46
Все это хорошо. А скажите пожалуйста, вот я выбираю файл, нажимаю кнопку открыть и рядом, в DBEdit-е появляется полный путь (что в принципе мне и надо было), а затем когда ставишь курсор на этот путь в DBEdit-е (ну, чтобы там подредактировать и т.д.) - эта строка (которая путь файла) совсем исчезает. Что я не так сделал или не доделал.
Код

if OpenDialog1.Execute then
DBEdit1.Text:=OpenDialog1.FileName;

Подскажите пожалуйста!
Спасибо.

Автор: Cashey 24.1.2005, 22:17
Ustas_007 извини, а зачем ты для этой цели используешь DBEdit? Ему же источник данных требуется, а он его не находит. Переделый на обычный ТEdit.

Автор: -=Ustas=- 24.1.2005, 23:07
Да нет уж, это я извиняюсь за подобные вопросы! Я просто только начал с Delph-ями общаться.
А как же мне тогда TEdit связать с тем полем БД, куде мне надо помещать этот путь?

Автор: Cashey 24.1.2005, 23:11
Цитата(Ustas_007 @ 24.1.2005, 23:07)
А как же мне тогда TEdit связать с тем полем БД, куде мне надо помещать этот путь?

Например так:
Код

DataModule1.Table1.FieldByName('Path').AsString := edit1.Text;


Автор: -=Ustas=- 25.1.2005, 15:19
Спасибо за советы, нормально все получилось, но..., но это при добавлении записи.
Т.е., при добавлении у меня идет следующая форма:
...несколько полей DBEdit для текста, ниже одно поле Edit с кнопкой обзор для пути. На нажатие "Добавить":
Код

if DataModule1.ADOMainTable.Modified then
   begin
        DataModule1.ADOMainTablePath_File.AsString:=EditPath.Text;
        DataModule1.ADOMainTable.Post;
        Close;
   end;

Это все работает нормально, а когда у меня вызывается окно редактирования, (на событие OnActivate сделал EditPath.Text:=DataModule1.ADOMainTablePath_File.AsString;), то после изменения пути у меня выскакивает ошибка типа "Project OISTDb.exe raised class EDataBaseError with message 'ADOMainTable: Dataset not in edit or insert mode'. Process stoped. Use Step or Run to continue.".
Код на нажатие кнопки "Сохранить" у меня такой:
Код

         if DataModule1.ADOMainTable.Modified then
               begin
                   DataModule1.ADOMainTablePath_File.AsString:=EditPath.Text;
                   DataModule1.ADOMainTable.Post;
                   DataModule1.ADOMainTable.Refresh;
                   Close;
               end
           else
               DataModule1.ADOMainTablePath_File.AsString:=EditPath.Text;

Первый блок здесь работает нормально, т.е. если в DBEdit-ах были какие нибудь изменения, то они и путь из Edit-а сохраняется, а если изменен был только путь, то выскакивает вышеописанная ошибка.
Подскажите, что я не так делаю, и вообще правильно ли я делаю.
P.S. Может и не в тему, но все же, как сделать так чтоб у программы в панели задач отображалось Caption главной формы? У меня отображается только имя exe-шника!
Заранее благодарен. Спасибо!

Автор: Akella 25.1.2005, 15:39
Цитата(Ustas_007 @ 25.1.2005, 15:19)
Это все работает нормально, а когда у меня вызывается окно редактирования, (на событие OnActivate сделал EditPath.Text:=DataModule1.ADOMainTablePath_File.AsString;), то после изменения пути у меня выскакивает ошибка типа "Project OISTDb.exe raised class EDataBaseError with message 'ADOMainTable: Dataset not in edit or insert mode'. Process stoped. Use Step or Run to continue.".

Как ты вызываешь окно редактирования? Код в студию, как говорит Vit.
В момент открытия формы ты пытаешься присвоить значение полю. Но таблица не находиться в режиме редактирования. Смотри также все события, происходящик в момент создания или показа (прорировки), или активации формы
Добавлено @ 15:47
а как ты редактируешь таблицу, в смысле где строка с Table1.Edit или еще что-то в этом роде.

Автор: -=Ustas=- 25.1.2005, 17:09
У меня на нажатие кнопки "Редактировать", на главной форме стоит:

EditForm.ShowModal;

А для отображения данных у меня используется DBGrid, и поля в окне редактирования DBEdit-ы, за исключением поля для пути файлов. Эти DBEdit-ы связаны с DBGrid и редактируют поля автоматически.
Я думаю, правильно ответил на Ваш вопрос, если нет, то поправьте.

Автор: -=Ustas=- 25.1.2005, 21:51
smile Упс, всё, сам допер! Надо было перед записью поставить таблицу в режим записи "DataModule1.ADOMainTable.Edit ".
Спасибо всем за помощь!!!
P.S. Ну а все-таки, как сделать так чтоб у программы в панели задач отображалось Caption.Text главной формы? У меня отображается только имя exe-шника!

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