Forum Replies Created
-
AuthorPosts
-
alex000Participant'Bat1' wrote:
Хотел спросить. TDBLookupComboboxEh проблема вообще когда нибудь будет решена? Или про этот компонент можно вообще забыть?
Если речь про скинирование TDBLookupComboboxEh, то если у вас есть исходники EhLib – вы можете убедится что там прорисовка кнопок и скроллов реализована “по-своему”.
И перехватить эту прорисовку без патча исходников EhLib – невозможно 🙁
Пару лет назад я для себя делал такой патч, но я использую С++Builder, и для пользователей Delphi он бесполезен, а переводить его на Delphi – все-таки большой труд.
Если есть желающие – могу выдать исходники, но вряд ли кто-то за это возьмется.
alex000ParticipantСпасибо за ответ!
А в чем сложность отследить изменение 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;Хотя, наверно это можно назвать стрельбой из пушки по воробьям 🙂
alex000ParticipantПосле появления окна CPU, посмотрите пожалуйста что в логе (View->Debug windows->Event log)
alex000ParticipantГод назад я в этой теме задавал вопрос:
Может быть случайно вместо Compile была попытка сделать Build ?
January 19, 2012 at 10:15 am in reply to: Динамическая загрузка конкретного скина из бинарного ресурса, линкуемого к проекту. #47582alex000Participant'Critter' wrote:dfm=текст.
Как можно текст перевести в “бинарный формат”, что это за бинарный формат и главное, зачем? (Речь о IDE BCB.)
Правой кнопкой на форме – снять чекбокс “Text DFM” получим DFM в бинарном формате. Но не советую так делать – в случае чего, так не получится исправить косяк в DFM простым блокнотом.
'Critter' wrote:Однако при вставке бинарных данных они в dfm-ке представляются в текстовом виде (резко размер растёт).
Так что формы просто линкуются к exe – принципиально – как ресурс, да, но текстовый :).
Вот это как раз неверно – линкер переводит DFM в бинарный формат и соответственно размер растет не так резко 😉
'Critter' wrote:Но суть не в этом – есть некоторые (более дешёвые – актуально! ) версии IDE, не позволяющие устанавливать сторонние компоненты в design-mode.
Так что статически добавить скин не удастся – только цеплять динамически из линкуемого ресурса.
Так с этого и надо было начинать 🙂
А то мы тут про всякие бинарные форматы рассуждаем.
Torbins выше дал ссылку на похожий вопрос, надеюсь, предложенное там решение подойдет.
alex000Participant'Critter' wrote:К сожалению, проблема актуальна.
Но если *.lib/*.bpl для обычных компонентов создаются и устанавливаются в IDE, то установить пакет для DB-компонентов не удаётся. :(.
Какая именно проблема?
“не удается” – это значит есть ошибка? какая именно?
Critter, лучше создайте новую тему и опишите что вы делаете и что не получается.
January 18, 2012 at 11:59 am in reply to: Динамическая загрузка конкретного скина из бинарного ресурса, линкуемого к проекту. #47578alex000Participant'Torbins' wrote:А чем не устраивает хранение dfm-ки в бинарном формате? А вообще поиск рулит: http://www.alphaskins.com/forum/index.php?showtopic=6256
Неважно в каком формате хранить dfm`ки – линкер их все равно переводит в бинарный.
alex000Participant'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 пакеты.
alex000ParticipantМожно предположить, что на разных компах стоит разный DPI.
В таком случае, альфа тут не при чем.
Проверьте – тогда обычные контролы тоже будут разъезжаться.
Еще можно попробовать выключить свойство формы Scaled
alex000ParticipantОбратите внимание на комментарий Paul Klink
Он описывает ошибку Delphi как раз в том методе, на который указывает ваш баг-репорт.
В более новых версиях Delphi она должна быть исправлена.
alex000ParticipantВы прописывали пути к этим *.obj в настройках IDE?
Очевидно, линкер не может найти эти файлы, вопрос только почему?
И непонятно откуда взялось “staticobjs” в именах файлов – никогда такого не видел – может это какая-то особенность XE2?
alex000Participant'Feg16' wrote:вопрос как лучше сделать, чтобы форма два раза не перерисовывалась,
Не знаю поможет ли в этом случае, но есть вариант временно запретить форме что-либо перерисовывать:
Code:SendMessage(Self.Handle, WM_SETREDRAW, 0, 0); // запретить окну абсолютно все рисования
…
SendMessage(Self.Handle, WM_SETREDRAW, 1, 0); // разрешитьВ некоторых случаях, после этого может понадобится принудительно перерисовать форму:
Code:Self.Invalidate();
sSkinProvider1.SkinData.Invalidate();alex000ParticipantКакая версия Delphi?
Посмотрите здесь: http://qc.embarcadero.com/wc/qcmain.aspx?d=9006
Явно это не про проблема альфы.
November 7, 2011 at 5:35 pm in reply to: [AC 7.54] Программное изменение ComboBox.ItemIndex не вызвает OnChange обработчика! #47145alex000ParticipantЭто не баг, это фича: 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
November 3, 2011 at 11:31 am in reply to: Access violations – SkinManager1GetMenuExtraLineData #47110alex000ParticipantДа, именно те же.
Я имел ввиду Ваш первый пример кода:
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;
}November 3, 2011 at 9:27 am in reply to: Access violations – SkinManager1GetMenuExtraLineData #47108alex000Participantа в отладчике разве не видно что Glyph = NULL?
Наверно надо добавить строчку:
Code:Glyph = new Graphics::TBitmap();alex000ParticipantПопробуйте sCheckBox.AutoSize = false
November 3, 2011 at 9:06 am in reply to: Access violations – SkinManager1GetMenuExtraLineData #47105alex000ParticipantКак можно убедится – В демке – ничего не удаляется.
Очевидно, AC сама удаляет этот битмап – иначе получается что:
Code:ВашОбработчикСобытия(ссылка на битмап *Glyph)
{
СоздаемБитмап Glyph
…
УдаляемБитмап Glyph
}Спрашивается, где можно использовать, этот битмап, кроме вашего обработчика?
И не надо меня убеждать что это не очевидно 🙂
А Support`у можно посоветовать добавить куда-нибудь в хелп информацию о том что битмап удаляется AC.
November 1, 2011 at 3:48 pm in reply to: Диалог без скина при проверке, запущено ли приложение #47094alex000Participant'Old' wrote:2. Вот это уже мысль. Можно подробнее?
В двух словах: добавляете в проект дата-модуль, кладете и настраиваете на нем SkinManager.
Потом, убираете его из списка AutoCreate и создаете его run-time, в Project1.cpp, примерно так:
Code:WINAPI _tWinMain(HINSTANCE, HINSTANCE, LPTSTR, int)
{
MyDataModule1 = new TMyDataModule(Application);
//… далее код проверки на вторую копию проги итдNovember 1, 2011 at 8:31 am in reply to: Диалог без скина при проверке, запущено ли приложение #47091alex000Participant'Old' wrote:Что посоветуете ?
Можно посоветовать 2 варианта:
1 – вместо MessageBox показывать свою форму, на которой будет свой SkinManager
2 – можно перед показом MessageBox создать TDataModule, в котором будет SkinManager
Второй вариант, имхо проще 🙂
-
AuthorPosts