alex000

Forum Replies Created

Viewing 20 posts - 61 through 80 (of 227 total)
  • Author
    Posts
  • in reply to: TsDBLookupComboBox в 6.42 #47788
    alex000
    Participant
    'Bat1' wrote:

    Хотел спросить. TDBLookupComboboxEh проблема вообще когда нибудь будет решена? Или про этот компонент можно вообще забыть?

    Если речь про скинирование TDBLookupComboboxEh, то если у вас есть исходники EhLib – вы можете убедится что там прорисовка кнопок и скроллов реализована “по-своему”.

    И перехватить эту прорисовку без патча исходников EhLib – невозможно 🙁

    Пару лет назад я для себя делал такой патч, но я использую С++Builder, и для пользователей Delphi он бесполезен, а переводить его на Delphi – все-таки большой труд.

    Если есть желающие – могу выдать исходники, но вряд ли кто-то за это возьмется.

    in reply to: Баг с ToolButton->Visible #47786
    alex000
    Participant

    Спасибо за ответ!

    А в чем сложность отследить изменение Visible у ToolButton?

    Можно же перехватывать WindowProc у всех ToolButton и там отлавливать изменение Visible.

    В случае с вышеприведенной демкой это будет выглядеть примерно так:

    Code:
    procedure TForm2.FormCreate(Sender: TObject);
    begin
    OldToolButtonWndProc := ToolButton3.WindowProc;
    ToolButton3.WindowProc := NewToolButtonWndProc;
    ToolButton3.Visible := true;
    end;

    procedure TForm2.NewToolButtonWndProc(var Message :TMessage);
    begin
    OldToolButtonWndProc(Message);
    if (Message.Msg = CM_VISIBLECHANGED) then
    sToolBar1.Realign();
    end;

    Хотя, наверно это можно назвать стрельбой из пушки по воробьям 🙂

    in reply to: Builder 6, AC v7.59, окно CPU #47615
    alex000
    Participant

    После появления окна CPU, посмотрите пожалуйста что в логе (View->Debug windows->Event log)

    in reply to: C++ Builder 6 #47586
    alex000
    Participant

    Год назад я в этой теме задавал вопрос:

    Может быть случайно вместо Compile была попытка сделать Build ?

    alex000
    Participant
    'Critter' wrote:

    dfm=текст.

    Как можно текст перевести в “бинарный формат”, что это за бинарный формат и главное, зачем? (Речь о IDE BCB.)

    Правой кнопкой на форме – снять чекбокс “Text DFM” получим DFM в бинарном формате. Но не советую так делать – в случае чего, так не получится исправить косяк в DFM простым блокнотом.

    'Critter' wrote:

    Однако при вставке бинарных данных они в dfm-ке представляются в текстовом виде (резко размер растёт).

    Так что формы просто линкуются к exe – принципиально – как ресурс, да, но текстовый :).

    Вот это как раз неверно – линкер переводит DFM в бинарный формат и соответственно размер растет не так резко 😉

    'Critter' wrote:

    Но суть не в этом – есть некоторые (более дешёвые – актуально! ) версии IDE, не позволяющие устанавливать сторонние компоненты в design-mode.

    Так что статически добавить скин не удастся – только цеплять динамически из линкуемого ресурса.

    Так с этого и надо было начинать 🙂

    А то мы тут про всякие бинарные форматы рассуждаем.

    Torbins выше дал ссылку на похожий вопрос, надеюсь, предложенное там решение подойдет.

    in reply to: C++ Builder 6 #47579
    alex000
    Participant
    'Critter' wrote:

    К сожалению, проблема актуальна.

    Но если *.lib/*.bpl для обычных компонентов создаются и устанавливаются в IDE, то установить пакет для DB-компонентов не удаётся. :(.

    Какая именно проблема?

    “не удается” – это значит есть ошибка? какая именно?

    Critter, лучше создайте новую тему и опишите что вы делаете и что не получается.

    alex000
    Participant
    'Torbins' wrote:

    А чем не устраивает хранение dfm-ки в бинарном формате? А вообще поиск рулит: http://www.alphaskins.com/forum/index.php?showtopic=6256

    Неважно в каком формате хранить dfm`ки – линкер их все равно переводит в бинарный.

    in reply to: Error #47425
    alex000
    Participant
    'klaid' wrote:

    помогите.что с этим делать?

    Например, воспользоваться переводчиком, чтобы понять что означает эта ошибка – а она означает что этот файл не нужно устанавливать 🙂 Достаточно сделать Make (Compile).

    Вообще-то, об этом написано в Install.txt:

    Quote:
    3. Open acnt*_R.bpk file or acnt*_R.cbproj (for RAD studio).

    In RAD studio open Project/Options/Paths and check this page,

    “Intermediate output” option must be empty!

    4. Compile it (“Make”, not “Build”!) and save all.

    А чтобы перестать быть “начинающим”, советую поискать чем отличаются run-time и design-time пакеты.

    in reply to: AphaControl на Win XP #47423
    alex000
    Participant

    Можно предположить, что на разных компах стоит разный DPI.

    В таком случае, альфа тут не при чем.

    Проверьте – тогда обычные контролы тоже будут разъезжаться.

    Еще можно попробовать выключить свойство формы Scaled

    in reply to: AC 7.54 TsCheckBox SkinIndex AV #47365
    alex000
    Participant

    Обратите внимание на комментарий Paul Klink

    Он описывает ошибку Delphi как раз в том методе, на который указывает ваш баг-репорт.

    В более новых версиях Delphi она должна быть исправлена.

    in reply to: Установить AlphaControls на C++Builder XE2 #47343
    alex000
    Participant

    Вы прописывали пути к этим *.obj в настройках IDE?

    Очевидно, линкер не может найти эти файлы, вопрос только почему?

    И непонятно откуда взялось “staticobjs” в именах файлов – никогда такого не видел – может это какая-то особенность XE2?

    in reply to: Tracking AC 7.55 / D7 / XP SP2 #47342
    alex000
    Participant
    'Feg16' wrote:

    вопрос как лучше сделать, чтобы форма два раза не перерисовывалась,

    Не знаю поможет ли в этом случае, но есть вариант временно запретить форме что-либо перерисовывать:

    Code:
    SendMessage(Self.Handle, WM_SETREDRAW, 0, 0); // запретить окну абсолютно все рисования

    SendMessage(Self.Handle, WM_SETREDRAW, 1, 0); // разрешить

    В некоторых случаях, после этого может понадобится принудительно перерисовать форму:

    Code:
    Self.Invalidate();
    sSkinProvider1.SkinData.Invalidate();
    in reply to: AC 7.54 TsCheckBox SkinIndex AV #47341
    alex000
    Participant

    Какая версия Delphi?

    Посмотрите здесь: http://qc.embarcadero.com/wc/qcmain.aspx?d=9006

    Явно это не про проблема альфы.

    alex000
    Participant

    Это не баг, это фича: http://docwiki.embarcadero.com/VCL/en/StdCtrls.TComboBox.OnChange

    Quote:
    Note: OnChange only occurs in response to user actions. Changing the Text property programmatically does not trigger an OnChange event.

    Видимо, авторы VCL имели причины реализовать именно такое поведение TComboBox.OnChange

    in reply to: Access violations – SkinManager1GetMenuExtraLineData #47110
    alex000
    Participant

    Да, именно те же.

    Я имел ввиду Ваш первый пример кода:

    Code:
    void __fastcall TfrmSettings::sSkinManager1GetMenuExtraLineData(TMenuItem *FirstItem,
    UnicodeString &SkinSection, UnicodeString &Caption, TBitmap *&Glyph,
    bool &LineVisible)
    {
    Caption = “Строка”;
    LineVisible = true;
    Glyph = new Graphics::TBitmap();
    Glyph->LoadFromResourceName((int)HInstance,”BITMAP_2″); // = menu_glyph;
    }
    in reply to: Access violations – SkinManager1GetMenuExtraLineData #47108
    alex000
    Participant

    а в отладчике разве не видно что Glyph = NULL?

    Наверно надо добавить строчку:

    Code:
    Glyph = new Graphics::TBitmap();
    in reply to: sCheckBox.Height #47106
    alex000
    Participant

    Попробуйте sCheckBox.AutoSize = false

    in reply to: Access violations – SkinManager1GetMenuExtraLineData #47105
    alex000
    Participant

    Как можно убедится – В демке – ничего не удаляется.

    Очевидно, AC сама удаляет этот битмап – иначе получается что:

    Code:
    ВашОбработчикСобытия(ссылка на битмап *Glyph)
    {
    СоздаемБитмап Glyph

    УдаляемБитмап Glyph
    }

    Спрашивается, где можно использовать, этот битмап, кроме вашего обработчика?

    И не надо меня убеждать что это не очевидно 🙂

    А Support`у можно посоветовать добавить куда-нибудь в хелп информацию о том что битмап удаляется AC.

    alex000
    Participant
    'Old' wrote:

    2. Вот это уже мысль. Можно подробнее?

    В двух словах: добавляете в проект дата-модуль, кладете и настраиваете на нем SkinManager.

    Потом, убираете его из списка AutoCreate и создаете его run-time, в Project1.cpp, примерно так:

    Code:
    WINAPI _tWinMain(HINSTANCE, HINSTANCE, LPTSTR, int)
    {
    MyDataModule1 = new TMyDataModule(Application);
    //… далее код проверки на вторую копию проги итд
    alex000
    Participant
    'Old' wrote:

    Что посоветуете ?

    Можно посоветовать 2 варианта:

    1 – вместо MessageBox показывать свою форму, на которой будет свой SkinManager

    2 – можно перед показом MessageBox создать TDataModule, в котором будет SkinManager

    Второй вариант, имхо проще 🙂

Viewing 20 posts - 61 through 80 (of 227 total)