{ **** UBPFD *********** by delphibase.endimus.com ****
>> Автосмена расширения файла в строке ввода OpenDialog при смене типа файла
Кусок из моей программы, в котором автоматически изменяется расширение файла в
строке редактирования имени файла в OpenDialog (у меня - в его наследнике), если
пользователь изменяет тип файла. Функция CustomOnTypeChange должна быть поставлена
как обработчик события OnTypeChange.
Зависимости: Windows, SysUtils, Forms, Dialogs
Автор: Павел Озерский, pavel@insect.mail.iephb.ru, Санкт-Петербург
Copyright: Cобственное написание (Павел Озерский), небольшая коррекция - Игорь Плотников
Дата: 18 апреля 2002 г.
***************************************************** }type
tHookParam = packedrecordcase integer of
0: (l: longint);
1: (
iDX: byte;
isOpen: byteBool;
xtLen: word);
end;
const
DX: array[1..5] ofstring[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" thenbeginif hp.isOpen then
ls := ""
elsebegin
byte(ss[0]) := GetWindowText(h, @ss[1], 255);
ls := ChangeFileExt(ss, "." + DX[hp.iDX]);
end;
SetWindowText(h, pchar(ls));
result := false;
endelse
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] <> "") thenif ext[1] = "." thenbegin
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+}
Если Вас заинтересовала или понравилась информация по разработке на Delph - "Автосмена расширения файла в строке ввода OpenDialog при смене типа файла", Вы можете поставить закладку в социальной сети или в своём блоге на данную страницу: Так же Вы можете задать вопрос по работе этого модуля или примера через форму обратной связи, в сообщение обязательно указывайте название или ссылку на статью!