Архив исходников программ, модулей и компонентов на Delphi


Начальная страница

Поиск по базе



Операционная система
Настройка приложения
Взаимодействия приложений
Файлы и директории
Строки и символы
Математика
Базы данных
Интернет и сеть
Мультимедиа
Аппаратная часть
VCL
Другие разделы [0]
 

Количество записей в базе - 537
Сегодня добавлено – 0

Имена, пути файлов



Вернуться к списку функций
 Автосмена расширения файла в строке ввода OpenDialog при смене типа файла

 Прислал: Павел Озерский (Санкт-Петербург) ( 18 апреля 2002 г. )
©  Cобственное написание (Павел Озерский), небольшая коррекция - Игорь Плотников
 Описание:
Кусок из моей программы, в котором автоматически изменяется расширение файла в
строке редактирования имени файла в OpenDialog (у меня - в его наследнике), если
пользователь изменяет тип файла. Функция CustomOnTypeChange должна быть поставлена
как обработчик события OnTypeChange.

 Зависимости:
Windows, SysUtils, Forms, Dialogs

 Ограничения:
Делалось на D3, что выйдет с другими версиями - ?

 Исходный текст:
{ **** UBPFD *********** by http://kladovka.net.ru/delphibase/ ****
>> Автосмена расширения файла в строке ввода OpenDialog при смене типа файла

Кусок из моей программы, в котором автоматически изменяется расширение файла в
строке редактирования имени файла в OpenDialog (у меня - в его наследнике), если
пользователь изменяет тип файла. Функция CustomOnTypeChange должна быть поставлена
как обработчик события OnTypeChange.

Зависимости: Windows, SysUtils, Forms, Dialogs
Автор:       Павел Озерский, pavel@insect.mail.iephb.ru, Санкт-Петербург
Copyright:   Cобственное написание (Павел Озерский), небольшая коррекция - Игорь Плотников
Дата:        18 апреля 2002 г.
***************************************************************** }

type
 tHookParam=packed record
  case integer of
   0:(l:longint);
   1:(
    iDX:byte;
    isOpen:byteBool;
    xtLen:word);
  end;
const
 DX:array[1..5]of string[3]=('bmp','tif','jpg','','');
function dHook(h:tHandle;param:longint):longbool;stdcall;
 var
  ss:shortstring;
  ls:ansistring;
  hp:tHookParam absolute param;
 begin
  byte(ss[0]):=GetClassName(h,@ss[1],255);
  if ss='Edit' then
   begin
    if hp.isOpen then
     ls:=''
    else
     begin
      byte(ss[0]):=GetWindowText(h,@ss[1],255);
      ls:=ChangeFileExt(ss,'.'+DX[hp.iDX]);
     end;
    SetWindowText(h,pchar(ls));
    result:=false;
   end
  else
   Result:=true;
 end;
{$O-}
procedure TMultiFormatOpenPictureDialog.CustomOnTypeChange(Sender:tObject);
 var
  ext:string;
  SaveStyle:boolean;
  hp:tHookParam;
 begin
  hp.isOpen:=not(Sender is tSaveDialog);
  hp.iDX:=tOpenDialog(Sender).FilterIndex;
  tOpenDialog(Sender).DefaultExt:=DX[hp.iDX];
  ext:=extractFileExt(tOpenDialog(Sender).filename);
  hp.xtLen:=length(ext);
  if(ext<>'')and(DX[tOpenDialog(Sender).FilterIndex]<>'')then
   if ext[1]='.' then
    begin
     SaveStyle:=NewStyleControls;
     NewStyleControls:=false;

     tOpenDialog(Sender).filename:=copy(tOpenDialog(Sender).filename, 1,
      length(tOpenDialog(Sender).filename)-length(ext))+'.'+
      tOpenDialog(Sender).DefaultExt;
     EnumChildWindows(GetParent(tOpenDialog(Sender).handle),@dHook,hp.l);
     NewStyleControls:=SaveStyle;
    end;
 end;
{$O+}


Вернуться к списку функций

Наверх ▲