Процедура открытия файлов при клике по ячейке (БД)

Модераторы: Duncon, Naeel Maqsudov, Игорь Акопян, Хыиуду

Ответить
Ryumka
Сообщения: 14
Зарегистрирован: 06 окт 2009, 13:26

Есть процедура открытия файлов при клике по ячейке, которая использует TDBGrid и TTable. Как сделать то же самое, если вместо TTable будет TQuery?

Код: Выделить всё


procedure TMyBD.DBGrid1CellClick(Column: TColumn);
begin

if DBGrid1.SelectedField.AsString=Table ['File'] then //Если клик по ячейке приходится на поле 'File' таблицы Table 
 begin
  if Table.FieldByName('ID').AsInteger=30 then  //При этом если в данной строке значение поля ID=30 
   begin
   ShellExecute(0,'Open',pchar('c:\h.xmcd'),nil,ni l,1); //открываем файл, который лежит по данному адресу
   if not FileExists ( 'c:\h.xmcd' ) then MessageDlg ('Файл не найден',MtError,[mbOK],0); //выдать ошибку если файл 
                                                                                                                                               //не  существует
   end;
  if Table.FieldByName('ID').AsInteger=10 then //Если при клике в данной строке значение поля ID=10
  ShellExecuteA(0, 'Open',pchar( ExtractFilePath(application.exename )+'МНК.xmcd'),nil,nil,1); //открываем другой файл
                                                                                                                                                         //другим способом задания
                                                                                                                                                         //адреса
  if Table.FieldByName('ID').AsInteger=20 then //Если при клике в данной строке значение поля ID=20
  ShellExecuteA(0, 'Open',pchar( ExtractFilePath(application.exename )+'\ModelSupport\1-5.xmcd'),nil,nil,1); //открываем 
                                                                                                                                                         //третий файл еще одним    
                                                                                                                                                         //способом задания адреса

  end;
end;
Аватара пользователя
Игорь Акопян
Сообщения: 1440
Зарегистрирован: 13 окт 2004, 17:11
Откуда: СПБ
Контактная информация:

Ryumka писал(а): //Если клик по ячейке приходится на поле 'File' таблицы Table

это условие "Если значение в выбранной колонке совпадает с текущим значением в поле File"
Изображение
Ryumka
Сообщения: 14
Зарегистрирован: 06 окт 2009, 13:26

Спасибо. Да, все верно. И все же с query такая операция не работает
Аватара пользователя
Игорь Акопян
Сообщения: 1440
Зарегистрирован: 13 окт 2004, 17:11
Откуда: СПБ
Контактная информация:

а для чего вообще это сравнение???
Если вам надо открыть файл по которому кликнули, то возьмите значение поля прямо из колонки.

[syntax='Delphi']
procedure TMyBD.DBGrid1CellClick(Column: TColumn);
var
sPathToFile: string;
begin
sPathToFile := Column.Field.AsString;
//***** убрать вообще if DBGrid1.SelectedField.AsString=Table ['File'] then //Если клик по ячейке приходится на поле 'File' таблицы Table
case Table.FieldByName('ID').AsInteger of
10: //Если при клике в данной строке значение поля ID=10
//открываем другой файл другим способом задания адреса
ShellExecuteA(0, 'Open',pchar( ExtractFilePath(application.exename )+'МНК.xmcd'),nil,nil,1);
20: //Если при клике в данной строке значение поля ID=20
//открываем третий файл еще одним способом задания адреса
ShellExecuteA(0, 'Open',pchar( ExtractFilePath(application.exename )+'\ModelSupport\1-5.xmcd'),nil,nil,1);
30: begin //При этом если в данной строке значение поля ID=30
if FileExists (sPathToFile) then
begin
//открываем файл, который лежит по данному адресу **** это если надо открыть файл по указанному пути, а не фиксированный
ShellExecute(0,'Open',pchar(sPathToFile),nil,ni l,1);
end
else //выдать ошибку если файл не существует
MessageDlg ('Файл не найден',MtError,[mbOK],0);
end;
end;
end;
[/syntax]

во, перековырял ваши условия :)
писал прямо тут - может чего наврал, но общая суть такая. Вопросы?
Изображение
Ответить