Forum Replies Created
-
AuthorPosts
-
SolidSnakeParticipant
ААА!! ОНО!!!
Большое спасибо! То что нужно. Шикарно правда?
Кстати, в программах еще никто не затенял интерфейс при появлении настроек или чегото другого!Даже класс есть готовый <img src="style_emoticons//smile.gif” style=”vertical-align:middle” emoid=”:)” border=”0″ alt=”smile.gif” />
Правда там строго задается 50 прозрачность.
Допишу чтоб можно было передавать степень прозрачности <img src="style_emoticons//smile.gif” style=”vertical-align:middle” emoid=”:)” border=”0″ alt=”smile.gif” />SolidSnakeParticipantQUOTEПанель ведь все равно будет непрозрачна
А средствами АС никак не сделать полностью прозрачную панель?SolidSnakeParticipantнужно не весь экран, а только рабочую область формы. <img src="style_emoticons//smile.gif” style=”vertical-align:middle” emoid=”:)” border=”0″ alt=”smile.gif” />
выглядеть должно так:
Форма обычная, не на весь экран. там компоненты различные. потом при переходе в настройки через меню, часть формы с компонентами должна затемнится.
При этом на темном фоне появится вполне светлая панель с настройками.SolidSnakeParticipantQUOTEА как может TImage помочь в таком вопросе?
а что может?
Я загрузил в него полупрозрачную картинку и смотрится ничего так – полупрозрачно <img src="style_emoticons//smile.gif” style=”vertical-align:middle” emoid=”:)” border=”0″ alt=”smile.gif” />
только эдиты всеравно не загораживаются.Может быть сделать как нибудь прозрачную панель и на нее полупрозрачную картинку положить?
SolidSnakeParticipantАспаком паковать не хуже?
SolidSnakeParticipantДля успешного использования интерфейса необходимо реализовать минимум 2 функции:
GetIDsOfNames, Invoke.GetIDsOfNames – позволяет проверить существует ли у вас вызываемый метод.
Invoke – все вызовы любых методов проходят через эту процедуру.CODEvar
MethNum : integer;Реализация GetIDsOfNames
CODEfunction GetIDsOfNames(const IID: TGUID; Names: Pointer;
NameCount, LocaleID: Integer; DispIDs: Pointer): HResult;
var
MethodName : String;
AvailableMethods : TStringlist;
begin
// Формирование списка допустимых методов
MethodName := AnsiUpperCase(PWideChar(Names^));
AvailableMethods := TStringList.Create;
AvailableMethods.Add('GETSTRINGHASH');
AvailableMethods.Add('ПОЛУЧИТЬХЕШСТРОКИ');
AvailableMethods.Add('GETFILEHASH');
AvailableMethods.Add('ПОЛУЧИТЬХЕШФАЙЛА');
// Проверка является вызванный метод допустимым
if AvailableMethods.IndexOf( MethodName ) = -1 then
begin
Result := E_NOTIMPL;
exit;
end;;
// Иначе метод найден установим соответствие
case AvailableMethods.IndexOf( MethodName ) of
0: MethNum := 1;
1: MethNum := 1;
2: MethNum := 2;
3: MethNum := 2;
end;
// Успешное завершение функции
Result := S_OK;
end;Реализация Invoke
CODEfunction Invoke(DispID: Integer; const IID: TGUID; LocaleID: Integer;
Flags: Word; var Params; VarResult, ExcepInfo, ArgErr: Pointer): HResult;
type
PVariantArray = ^TVariantArray;
TVariantArray = array[0..65535] of Variant;
var
Parms: PDispParams;
ParmsStr : WideString;
FRetValue : Variant;
FRetStr : UTF8String;
begin
Parms := @Params;
// Ранее в GetIDsOfNames было заполнено какой номер метода вызывается
case MethNum of
1:
begin
// GETSTRINGHASH
try
// Получим параметры
ParmsStr := PVariantArray(Parms.rgvarg)^[0];
if Length(ParmsStr) = 0 then
begin
ShowMessage('Пустая строка параметра GetStringHash(?)');
Result := E_FAIL;
exit;
end;
// Выполним функцию
FRetStr := GetStringHash(ParmsStr);
// Установим возвращаемое значение
if VarResult = nil then
VarResult := @FRetValue;
POleVariant(VarResult)^ := FRetStr;
// Установим метку удачного завершения
Result := S_OK;
Except
// Установим метку ошибки
Result := E_UNEXPECTED;
end;
end;
2:
begin
// GETFILEHASH
try
// Получим параметры
ParmsStr := PVariantArray(Parms.rgvarg)^[0];
if Length(ParmsStr) = 0 then
begin
ShowMessage('Пустая строка параметра GetFileHash(?)');
Result := E_FAIL;
exit;
end;
// Выполним функцию
FRetStr := GetFileHash(ParmsStr);
// Установим возвращаемое значение
if VarResult = nil then
VarResult := @FRetValue;
POleVariant(VarResult)^ := FRetStr;
// Установим метку удачного завершения
Result := S_OK;
Except
// Установим метку ошибки
Result := E_UNEXPECTED;
end;
end;
end;
end;Надеюсь кому-нибудь пригодится…
SolidSnakeParticipantВ общем решение найдено завтра опишу как я решил эту проблему. – Мне кажется я 3х колесный велосипед придумал <img src="style_emoticons//smile.gif” style=”vertical-align:middle” emoid=”:)” border=”0″ alt=”smile.gif” />
Но работает.. -
AuthorPosts