SolidSnake

Forum Replies Created

Viewing 7 posts - 101 through 107 (of 107 total)
  • Author
    Posts
  • in reply to: Полупрозрачная png в image #39221
    SolidSnake
    Participant

    ААА!! ОНО!!!
    Большое спасибо! То что нужно. Шикарно правда?
    Кстати, в программах еще никто не затенял интерфейс при появлении настроек или чегото другого!

    Даже класс есть готовый <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” />

    in reply to: Полупрозрачная png в image #39216
    SolidSnake
    Participant

    QUOTE
    Панель ведь все равно будет непрозрачна


    А средствами АС никак не сделать полностью прозрачную панель?

    in reply to: Полупрозрачная png в image #39214
    SolidSnake
    Participant

    нужно не весь экран, а только рабочую область формы. <img src="style_emoticons//smile.gif” style=”vertical-align:middle” emoid=”:)” border=”0″ alt=”smile.gif” />

    выглядеть должно так:
    Форма обычная, не на весь экран. там компоненты различные. потом при переходе в настройки через меню, часть формы с компонентами должна затемнится.
    При этом на темном фоне появится вполне светлая панель с настройками.

    in reply to: Полупрозрачная png в image #39209
    SolidSnake
    Participant

    QUOTE
    А как может TImage помочь в таком вопросе?


    а что может?
    Я загрузил в него полупрозрачную картинку и смотрится ничего так – полупрозрачно <img src="style_emoticons//smile.gif” style=”vertical-align:middle” emoid=”:)” border=”0″ alt=”smile.gif” />
    только эдиты всеравно не загораживаются.

    Может быть сделать как нибудь прозрачную панель и на нее полупрозрачную картинку положить?

    SolidSnake
    Participant

    Аспаком паковать не хуже?

    in reply to: IDispatch – GetIDsOfNames, Invoke. #38780
    SolidSnake
    Participant

    Для успешного использования интерфейса необходимо реализовать минимум 2 функции:
    GetIDsOfNames, Invoke.

    GetIDsOfNames – позволяет проверить существует ли у вас вызываемый метод.
    Invoke – все вызовы любых методов проходят через эту процедуру.

    CODE
    var
    MethNum : integer;

    Реализация GetIDsOfNames

    CODE
    function 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

    CODE
    function 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;

    Надеюсь кому-нибудь пригодится…

    in reply to: IDispatch – GetIDsOfNames, Invoke. #38500
    SolidSnake
    Participant

    В общем решение найдено завтра опишу как я решил эту проблему. – Мне кажется я 3х колесный велосипед придумал <img src="style_emoticons//smile.gif” style=”vertical-align:middle” emoid=”:)” border=”0″ alt=”smile.gif” />
    Но работает..

Viewing 7 posts - 101 through 107 (of 107 total)