Forum Replies Created
-
AuthorPosts
-
elpikParticipant
Для такого, обычно, используют ViewStyle = vsReport
В своих проектах постоянно юзаю sListView – никаких проблем не испытываю…
elpikParticipantПопробуйте уменьшить высоту исходного PNG
November 25, 2013 at 10:08 am in reply to: Перестали скинироваться стандартные контролы на унаследованных формах #51175elpikParticipant'Support' wrote:Насчет скриншота я не совсем понял, как он генерируется?
При возникновении ошибки (если включена генерация скриншота), в обработчике выполняется следующий код:
(jpg – хранится в папке лога)
Code:procedure TExceptHandler.DoGenerateScreenshot(AName: string);
var
bmp: TBitmap;
jpg: TJPEGImage;
begin
try
bmp := Screen.ActiveForm.GetFormImage;
jpg := TJPEGImage.Create;
jpg.CompressionQuality := 100;
jpg.Assign(bmp);
jpg.SaveToFile(AName);
finally
FreeAndNil(jpg);
FreeAndNil(bmp);
end;
end;Затем это все укладывается в письмо, и отсылается мне на мыло (если включена отправка)…
тут нужные свойства TExceptHandler
Code:ExHandler.isShowExceptions:= True; //вкл показ ошибок пользователю
ExHandler.isShowAllFrames := True; //вкл показ сообщений через польз.-окно с раскрученным стеком
ExHandler.isGenScreenShot := True; //вкл генерация скриншота
ExHandler.isMailSend := True; //вкл отправка ошибок по мылу (требует настроек почтового сервера)
ExHandler.MailHost := '…'; //хост почт. сервера
ExHandler.MailPort := 25; //порт почт. сервера
ExHandler.MailUsername := '…'; //логин почт. сервера
ExHandler.MailPassword := '…'; //пароль почт. сервера
ExHandler.MailAddress := '…'; //адрес (мыло) куда отправлятьNovember 25, 2013 at 5:17 am in reply to: Перестали скинироваться стандартные контролы на унаследованных формах #51167elpikParticipant'Support' wrote:Не обязательно, но всегда желательно 🙂
Реально демку сделать с незашкуренными контролами?
Конечно, не вопрос. 🙂 Но придется JCL установить…
PS: Обнаружил еще 1-ну особенность.. При генерации скриншота, кнопка и чекбокс не видны если включены скины… А если выключить видны 🙂
elpikParticipantВот тестовый пример:
Правда с некоторыми скинами вылезают артефакты 🙂
elpikParticipant'TCount' wrote:Вот как раз я и написал копмонент на основе прозрачного канваса, на котором рисуется текст. И думал его добавить в заголовок.
по поводу собственной отрисовки заголовка формы:
Code:procedure TForm1.CreateParams(var Params: TCreateParams);
begin
inherited CreateParams(Params);
Params.Style:=WS_POPUP or WS_SIZEBOX;
end;procedure TForm1.Panel1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
ReleaseCapture;
Perform(WM_SYSCOMMAND, SC_DRAGMOVE, 0);
end;случайно нашел на SQL.ru 🙂
November 22, 2013 at 11:17 am in reply to: Перестали скинироваться стандартные контролы на унаследованных формах #51151elpikParticipant'Support' wrote:Если Tag = -1, то все отрицательные числа входят в это число и побитовая проверка на вхождение будет всегда равна True.
То есть, нужно у этой кнопки Tag изменить на 0 или что-то другое.
-1 в двоичном виде: 11111111
поставил 8.50, похоже теперь без СкинПровайдера стандартные контролы не скинятся (TButton, TPanel, TLabel, TMemo);
Пользовательское окно с ошибкой и раскрученным стеком без скин провайдера не закрасилось.
Вопрос: теперь использование СкинПровайдера стало обязательным? 😉
elpikParticipant'Support' wrote:Свойство TsTitleBar.ItemsSpacing задумывалось для этих целей, только еще почему-то не реализовано. :huh:
По поводу плавности есть пара вопросов…
Допустим взять текст, вычислить его ширину и длину в пикселях,
создать по этим размерам битмап в памяти и нарисовать на нем текст.
Затем этот битмап попиксельно прокручивать в прозрачном прямоугольнике над заголовком.
Вопросы:
1) Такое возможно средствами GDI, или для этого понадобится GDI+?
2) Можно ли добавить такой компонент в палитру который будет прокручивать текст над прямоугольником контрола?
elpikParticipant'TCount' wrote:Здравствуйте!
Есть ли возможность программно отрисовывать что-нибудь в заголовке формы?
Я хотел сделать бегущую строку (через Canvas) в заголовке формы, но не нашел способа.
Как вариант предложу:
1) создай отдельный поток с бесконечным циклом.
2) в нем расчитай Rect – заголовка формы, и нужные координаты вывода текста.
3) через WIN-API выводи текст в нужной позиции, с нужным интервалом.
Там можно задать флаг не позволяющий рисовать за пределами Rect.
И не забудь про вывод на канву через синхронизацию…
November 19, 2013 at 9:35 am in reply to: Перестали скинироваться стандартные контролы на унаследованных формах #51114elpikParticipant'Dmitro25' wrote:Чтобы не быть голословным – вот снял скриншот модальной формы, которая появляется при нажатии кнопки “Show Form” основной формы программы, как он выглядит на моём компьютере. Кнопка “Ок” не скинируется.
Если у Вас не так – может быть, дело в версии Windows? У меня Windows XP.
PS: Проверил на виртуальной машине Windows 7. Тот же самый результат – скинирование кнопки отсутствует.
Беру Ваш проект:
Открываю в Delphi-7,
Компилирую,
Выполняю.
PS: У меня D7/ASKIN-8.49/Win7-x64(корпоративная). На всякий случай, проверьте настройки Delphi, и переподключите Third party controls повторно.
elpikParticipantТы бы хоть скрины показал, а то вообще непонятно что ты там мудришь 🙂
November 13, 2013 at 1:40 pm in reply to: Перестали скинироваться стандартные контролы на унаследованных формах #51057elpikParticipantПроверил ваш пример на D7 все нормально скинируется…
elpikParticipant'TCount' wrote:Смущает указание на то, что можно задавать прозрачные участки. В подсказках прозрачные участки вообще не работают, если использовать секции скинов.
Набросай примерчик… что то не очень понял почему у тебя не выходит
elpikParticipant'TCount' wrote:Опять же, код большой, вырезать не получится…
Вобщем, я пытался по-разному реализовать это дело. Я говорил про перерисовку панелей “волнообразно”, это устраняется путем добавления на формы
SkinProvider'ов (я их не использовал). Но при этом возникли проблемы. Дело в том, что мои формы используют стиль рамки “bsnone” и я не использую скинирование форм и заголовков, у меня две отдельных панели заменяют это все. Прозрачность указывается в свойствах самой формы, поэтому углы получаются округлыми. Но прикол в том, что этот SkinProvider игнорирует мой цвет прозрачности и рисует какой-то белый фон. Я пробовал и в редакторе скинов делать секции формы и диалога прозрачными – все равно рисуется какой-то белый фон, что портит всю картину.
В итоге пришлось отказаться от SkinProvider'a, что печально.
Вобщем, я сделал смену скина так: окна скрываются, скин меняется (SkinManager1.SkinName:=…), и окна снова показываются. Это занимает примерно секунду на моем слабом компе, поэтому норм.
Но вообще, действительно ли формы скинируются по отдельности? Вот если будет 5 форм (все показаны на экране), они же не смогут проскиниться все сразу, ведь так? А если еще включить анимацию при смене скина, то это будет прекрасно видно.
SkinProvider – должен быть на каждой форме.
Проверь, возможно у тебя включено свойство (sSkinManager-а) ExtendedBorders?
И еще у каждого SkinProvider-а есть свойство DrawNonClientArea – выключи его
elpikParticipant'TCount' wrote:Здравствуйте! У меня как минимум на экране присутсвует 3 окна программы (рызные формы).
Сделал смену скина, но скин меняется как-то “волнообразно”. То есть, снчала одна панель преображается, потом другая и т.д.
Можно ли как-то сделать это более плавно? Например, как сначала все прорисовать, а потом сразу показать?
Просто каждое окно по очереди скинется, получается какая-то цветомузыка)
Покажи тестовый примерчик, может что не так делаешь?…
elpikParticipant'TCount' wrote:[attachment=6520:Image 1.png]
а в что не устраивает в описании?
elpikParticipant'Alex_F' wrote:Имеются проблемы с отображением кириллических шрифтов для Windows без установленного русского языка. Скрины приведены с отлюченной темой и со включенной. На “русской” Windows этих проблем нет. Все отображается правильно. Пробовал менять свойство Charset у Font – не помогает. Неправильно отображается заголовок у TsGroup.
Версия AlphaSkins 7.60.
Windows 7
А делфи какой версии?
может имеет смысл пересесть на Юникодную версию >= Delphi-2009?
elpikParticipant'TCount' wrote:Кода много…Вобщем, у меня при создании формы должны присваиваться Edit'aм отступы.
Вот при создании формы я и отправлял им сообщения:
SendMessage(sEdit1.Handle, EM_SETMARGINS, EC_LEFTMARGIN, LPARAM(10));
…
Отступы появлялись только при наведении на Edit или при отключении скина.
Да посмотрел, у контрола своя отрисовка, пока он не в фокусе, и стандартная когда в фокусе.
видать поэтому он игнорит EM_SETMARGINS в состоянии покоя…
elpikParticipantПокажи код, поглядим что можно сделать.
elpikParticipantПосмотри как сделано в скине FM, или ты о другом?
-
AuthorPosts