Forum Replies Created
-
AuthorPosts
-
OldParticipant'Ahell' wrote:P.S. Ну когда же можно будет увидеть справку к компонентам, и хороший ман по рисованию скинов… ?
а шо не понятного ? пофиг им и это, и все остальное, имхо
OldParticipant'Support' wrote:А элементы управления на окне?
Я проверил и на форму в вашем примере положил TButton – после ShowWindow форма рисуется как надо, а вот кнопки на ней нету.
Это объясняется тем, что свойство Visible у такой формы остается False, Showing – тоже.
Форма рисуется правильно потому что Builder в ее отображении не участвует, а VCL зависит от свойства Visible.
По-любому нужно как-то это свойство у формы инициализировать, чтобы компоненты из VCL нормально отображались.
Скины тоже ориентируются на свойство Visible.
увы, танцы с бубном и
Code:ВызываемаяФорма->Update();
ВызываемаяФорма->Repaint();
ВызываемаяФорма->Invalidate();
ВызываемаяФорма->Visible = true;в ВызываемаяФорма – FormShow не помогли.
И я не помню, есть ли какое похожее АПИ-сообщение для “встряски” формы.
OldParticipant'Support' wrote:Если я правильно понял, то sSkinManager1.SkinName
Спасибо, уважаемый Support, я уже нашел.
Думалось, что есть что-нибудь непосредственное, типа
Code:AvailableSkins.SkinNameOldParticipant'Torbins' wrote:А где у вас BEGIN_MESSAGE_MAP/END_MESSAGE_MAP?
Там же, где и в Вашем примере 😀 .
Работает, спасибо, уважаемый Torbins.
Но это – все же, – извращение, выход из ситуации, поскольку приходится писать кучу в сравнении с одним единственным вызовом ShowWindow(), и выход этот никоим образом не снимает вопрос о функции АПИ ShowWindow().
Но это уже, наверное, вопрос больше к уважаемому Support'у 🙂 . Будем ждать 🙁 …
OldParticipantПрограмма окно находит, но не показывает:
OldParticipant'Torbins' wrote:1. Не вижу в вашем коде аналога сроки
Code:private
procedure MyShow(var m: TMessage); message WM_MyShow;Это привязка сообщения к обработчику.
2. Еще можете поставить бряк внутри MyShow. Наверняка туда никогда не заходит.
3. Ну и не помешает сравнить значение FoundHandle с реальным.
1. Аналог (прототип) строки в заголовочном файле .Н.
3. Шас поставлю… Хотя никакой отсебятины в коде – просто перевод на си.
2. Ставил непосредственно:
Code:PostMessage(FindWindow(“TForm1”,0),WM_MyShow,0,0);– результат тот же. Или Вы имеете ввиду
Code:if (FoundHandle == FindWindow(“TForm1”,0) {
PostMessage(FoundHandle,WM_MyShow,0,0);
}OldParticipantCode://—————————————————————————
#define WM_MyShow WM_USER+1
#include
//…
TForm1 *Form1;
//—————————————————————————
void TForm1::MyShow(TMessage &m)
{
Show();
}
//—————————————————————————
//…
//—————————————————————————
void __fastcall TForm1::mniShowApiClick(TObject *Sender)
{
HWND hWnd,FoundHandle;
FoundHandle = FindWindow(“TForm1”,0);
PostMessage(FoundHandle,WM_MyShow,0,0);
// ShowWindow(hWnd,SW_SHOW);
}
//—————————————————————————Ошибок нет, окна тоже 🙁 .
OldParticipant'Torbins' wrote:1. ExtendedBorders включены? Попробуйте выключить.
2. Вообще использовать ShowWindow действительно не стоит.
3. Вместо этого лучше создать обработчик кастомного сообщения, который будет вызывать Show. И соответственно из других прог отсылать именно это сообщение.
1. Все настройки – по умолчанию, т.е., ExtendedBorders выключены.
2. С таким же успехом можно советовать не использовать АС.
3. Совет хорош примером 🙂 .
Спасибо.
OldParticipant'Support' wrote:В design-time IDE не даст изменить Width или Height на величину меньше 150, но оказывается Builder позволяет сделать это в ран-тайм, даже если стоит RangeChecking <_< в этом все дело. Спасибо за наводку, у меня получилось уже вопроизвести проблему, скоро поправлю. PS. В вашей демке не было этого, поэтому в ней не воспроизводилось.
Спасибо, Support.
OldParticipantну и хрен с ним… с текстом… главное, что красиво… как и у меня… с увеличительным стеклом… и никто даже не чешется…
OldParticipant'Support' wrote:Уже есть такое ограничение, только на размере 150х150.
Вообще, странно, что появилась такая проблема. Я пытаюсь повторить, но не получается, даже с вашей демкой.
Пока что изучаю это все 🙂
А у меня все стабильно.
И в Инспекторе объектов я не нашел “ограничения, даже на размере 150х150”.
November 8, 2011 at 2:43 pm in reply to: Access violations – SkinManager1GetMenuExtraLineData #47152OldParticipant'Support' wrote:Уже должно работать.
на вас, уважаемый Support , и испытал 😀 , как бы работает 🙂 , спасибо.
и на себе, любимом, потренировался – работает ! :a1:
November 6, 2011 at 3:14 pm in reply to: Диалог без скина при проверке, запущено ли приложение #47131OldParticipant'Postscripter' wrote:1) “Непонятный” означает “непонятно зачем оно нужно”
2) тоже что и (1). но программа ваша – тут я вам не советчик
почему бы и нет, если совет дельный 🙂
November 6, 2011 at 4:08 am in reply to: Диалог без скина при проверке, запущено ли приложение #47126OldParticipant'Postscripter' wrote:1. Вместо отображения непонятного диалога2. следовало бы послать предыдущему экземпляру программы сообщение,
3. по которому оно выскочит в центр экрана.
4. Ведь почему пользователь запускает вторую копию? Потому что потерял первую ^_^
1. Единственное, чем могу вам помочь по этому поводу – это советом учить английский, будет полезен не только в данном случае.
2. Единственное, что могу вам посоветовать – это внимательно читать тему, в которой вы предполагаете разместить ваше сообщение (сообщение #4):
Quote:Настройки повторного запуска и отображения соответствующего сообщения при этом присутствуют по умолчанию.3. Это предусмотрено.
4. Логика данной программы не предполагает одновременного существования двух копий приложения, хотя такая возможность пользователю предоставлена.
Для вас персонально объясняю:
– чтобы найти “потерявшееся” окно, не обязательно запускать программу повторно, для этих целей существуют окно программы на панели задач и иконка в системном лотке.
November 3, 2011 at 1:01 pm in reply to: Access violations – SkinManager1GetMenuExtraLineData #47111OldParticipant'alex000' wrote:Я имел ввиду …ага … [BCC32 Error] untFormSettings.cpp(132): E2190 Unexpected } … шучу, конечно 🙂
Все супер :a7: .
Спасибо, alex000 .
Почему, когда я нажимаю – впервые за текущие сутки – зелененькую кнопулечку с плюсиком, то получаю вот такое уведомление :
November 3, 2011 at 10:45 am in reply to: Access violations – SkinManager1GetMenuExtraLineData #47109OldParticipant'alex000' wrote:а в отладчике разве не видно что Glyph = NULL?
Наверно надо добавить строчку:
Code:Glyph = new Graphics::TBitmap();а это :
Code:Glyph = menu_glyph;? те же яйца, только в профиль ? или я чего не понял – куда добавить ?
November 3, 2011 at 9:16 am in reply to: Access violations – SkinManager1GetMenuExtraLineData #47107OldParticipant'alex000' wrote:1. Как можно убедится – В демке – ничего не удаляется.Очевидно, AC сама удаляет этот битмап – иначе получается что:
Code:ВашОбработчикСобытия(ссылка на битмап *Glyph)
{
СоздаемБитмап Glyph
…
УдаляемБитмап Glyph
}2. Спрашивается, где можно использовать, этот битмап, кроме вашего обработчика?
И не надо меня убеждать что это не очевидно 🙂
3. А Support`у можно посоветовать добавить куда-нибудь в хелп информацию о том что битмап удаляется AC.
1. Шас убедюсь 🙂 .
2. Если в ресурсе – стандартная иконка приложения – то везде 🙂 .
Хотя я охотно верю вам на слово, уважаемый alex000, и не без оснований :a7: .
3. ой, я вас умоляю … У уважаемого Support`а и без этого забот – выше крыши 🙁 .
Вопрос про
Code:Glyph->LoadFromResourceName((int)HInstance,”BITMAP_2″); // = menu_glyph;– что позволило бы избежать “мутных мест”,
все еще актуален .
November 1, 2011 at 4:38 pm in reply to: Диалог без скина при проверке, запущено ли приложение #47095OldParticipant'alex000' wrote:В двух словах: добавляете в проект дата-модуль…
Спасибо, alex000, все получилось 🙂 . Как видно из фотографии, скинированный диалог есть, а кнопочки для его вызова нет, т.е., скинируется именно диалог при попытке повторного запуска приложения.
В двух словах 🙂 : Что сделал дата-модуль ?
November 1, 2011 at 2:21 pm in reply to: Диалог без скина при проверке, запущено ли приложение #47093OldParticipant'Mike-Aiki' wrote:1. Добавить в программе настройку поведения при запуске других экземпляров приложения – разрешить или запретить, без вывода всяких окон диалога, что само по себе IMHO вредно.2. В данном случае – с чего это окно будет скинировано, если вызывается до создания формы с SkinManager? 😉
1. Настройки повторного запуска и отображения соответствующего сообщения при этом присутствуют по умолчанию.
2. Это понятно, в том и суть вопроса.
Спасибо, Mike-Aiki.
'alex000' wrote:Можно посоветовать 2 варианта:1 – вместо MessageBox показывать свою форму, на которой будет свой SkinManager
2 – можно перед показом MessageBox создать TDataModule, в котором будет SkinManager
Второй вариант, имхо проще 🙂
1. Рассматривалось, как говорится, овчинка выделки не стоит, имхо.
2. Вот это уже мысль. Можно подробнее?
Спасибо, alex000/
OldParticipantПри более пристальном исследовании оказалось, что иконки “выпадают” также в РАД ХЕ2.
-
AuthorPosts