Forum Replies Created
-
AuthorPosts
-
TCountParticipant
Не видать прикрепленей чот)
Но я делаю так:
….
BEGIN
CreateMutex(Nil, True, '9999');
if GetLastError=ERROR_ALREADY_EXISTS then begin
if ParamCount=0 then ShowMessage('Неее, харе уже запускать!:)');
EXIT;
end;
Application.Initialize;
…
TCountParticipant'elpik' wrote:Для такого, обычно, используют ViewStyle = vsReport
В своих проектах постоянно юзаю sListView – никаких проблем не испытываю…
Никаких проблем? А что насчет этой: Про ползунок
TCountParticipant'szimin' wrote:демонстрация проблемы:
Архив с исходниками приложен: [attachment=6578:DemoBug.zip]
AlphaControls 8.50, Delphi 2009, Windows 7,8
Подтверждаю! Вообще, с ListView'ом масса проблем(
TCountParticipant'Mike' wrote:Можно проще:
Code:PrepareForAnimation(sPageControl1);
sPageControl1.ActivePageIndex := N;
AnimShowControl(sPageControl1, 200);Я и не сразу нашел эти функции, они в модуле sVclUtils. Не докумментировано. Хотя можно было бы и покопаться)
TCountParticipant'LuxCore' wrote:Эффект появления/исчезновения содержимого вкладок
Чуть неправильно было) Вот, попробуй лучше это:
procedure TForm14.Button1Click(Sender: TObject);
var MCur,PCur: tpoint;Tab: byte;rect: trect;
begin
Tab:=2;
rect:=sPageControl1.TabRect(Tab);
PCur:=sPageControl1.ClientToScreen(Point(0, 5));
inc(PCur.X,Rect.Left+10);
MCur:=mouse.CursorPos;
setcursorpos(PCur.X,PCur.Y);
Mouse_Event(MOUSEEVENTF_ABSOLUTE or MOUSEEVENTF_LEFTDOWN, PCur.X, PCur.Y, 0, 0);
setcursorpos(MCur.X,MCur.Y);
Mouse_Event(MOUSEEVENTF_ABSOLUTE or MOUSEEVENTF_LEFTUP, PCur.X, PCur.Y, 0, 0);
end;
P.S. Tab – номер закладки, на которую нужно переключиться
Или как функцию:
Function GoTab(Tab: integer): boolean;
var MCur,PCur: tpoint;rect: trect;
begin
TRY
rect:=sPageControl1.TabRect(Tab);
PCur:=sPageControl1.ClientToScreen(Point(0, 5));
inc(PCur.X,Rect.Left+10);
MCur:=mouse.CursorPos;
setcursorpos(PCur.X,PCur.Y);
Mouse_Event(MOUSEEVENTF_ABSOLUTE or MOUSEEVENTF_LEFTDOWN, PCur.X, PCur.Y, 0, 0);
setcursorpos(MCur.X,MCur.Y);
Mouse_Event(MOUSEEVENTF_ABSOLUTE or MOUSEEVENTF_LEFTUP, PCur.X, PCur.Y, 0, 0);
result:=true;
EXCEPT result:=false;END;
end;
TCountParticipant'LuxCore' wrote:При нажатии на радиобутоны необходимо программное переключение вкладок pagecontrol`а, вкладки не видимые. Нужно для того, чтобы плавный эффект появление/исчезновения содержимого остался.
Спасибо.
Как-то странно и непонятно звучит “переключение невидимых вкладок, чтобы остался эффект появления/исчезновения”. А зачем невидимым вкладкам этот эффект?
TCountParticipantНеужели никто с этим не сталкивался и только я один такое наблюдаю?)))
Ползунок пропадает не на всех скинах, а только на красиво оформленных. Получается, что как всегда
актуальны почти стандартные ScrollBar'ы…
TCountParticipant'Support' wrote:Проблема в пакете, думаю в следующем релизе будет все Ок )
Спасибо, что рассмотрели мою проблему)
TCountParticipant'Support' wrote:Спасибо, сегодня буду смотреть.
Спасибо, буду ждать.
TCountParticipant'Alfatester' wrote:При вводе минуса, а потом числа перед минусом возикает ошибка.
Число перед минусом должно быть блокировано.
Скрин и код приатачил.
Есть такое…
Как альтернативу, могу предложить следующий код:
procedure TForm1.sDecimalSpinEdit1KeyPress(Sender: TObject; var Key: Char);
var str: string;
begin
str:=sDecimalSpinEdit1.Text;
if length(str)>0 then if (str[1]='-')and(sDecimalSpinEdit1.SelStart=0) then if key<>'-' then key:=#0;
end;
TCountParticipant'elpik' wrote:Попробуйте уменьшить высоту исходного PNG
Я обычно с маленькой высотой PNG и делал все проекты, но в этот раз это не совсем меня устроило, так как в этот раз у меня в качестве фона градиент. Получается, что если подсказка будет в несколько строк, то этот градиент неприятно растянется.
'Support' wrote:Можно пример посмотреть? Тогда точно скажу что надо сделать )
Набросал примерчик. В нем можно менять и кол-во строк, чтобы посмотреть, как растягивается градиент при маленьких размерах исходного PNG.
Надеюсь на помощь:)
P.S. Возможно, Вы посоветуете использовать сразу оба PNG, но это немного накладно, так как у меня свои скины и под каждый из них разные подсказки (PNG загружаются программно). Хотелось бы какой-то оптимальный вариант:)
TCountParticipantПокопался чуток в AlphaHints и нашел все, что мне нужно было:)
Если кому интересно, то программно настраиваются бордюры и прочее для подсказки в самом PNG, имеющем тип TAchintImage.
Например, простая загрузка нового изображения в AlphaHints в первый итем (на Delphi):
procedure TForm1.Button1Click(Sender: TObject);
var AHImg: TAchintImage;
begin
AHImg:=TAchintImage.Create(sAlphaHints1.Templates.Items[0]);
AHImg.Image.LoadFromFile('путь к PNG…');
//настройки бордюров (Left,Top,Right,Bottom)
with AHImg.BordersWidths do begin … end;
//настройки отступов контента (Left,Top,Right,Bottom)
with AHImg.ClientMargins do begin … end;
//для включения прозрачности
AHImg.Image.AlphaFormat:=afPremultiplied;
sAlphaHints1.Templates.Items[0].ImageDefault:=AHImg;
AHImg.Free;
end;
TCountParticipant'Support' wrote:Можно как-то посмотреть в работе на эти формы? Я буду знать причину точнее.
К сожалению, такой возможности нет, но скорее всего это всего лишь я намудрил.
Кстати, еще заметил, не относящееся к данной “проблеме”:
Дело в том, что по неизвестным причинам свойсво Doublebuffered, установленное (например, форме) в среде разработке, сбрасывается при запуске.
То есть, я устанавливаюю двойную буфферизацию в TRUE при разработке, а когда запускаю – она сама отключается.
Работает только, если программно ее устанавливать.
Какое-то время я недоумевал, почему ListView постоянно моргает, пока не нашел этот небольшой глюк.
TCountParticipant'elpik' wrote:Вот тестовый пример:
Правда с некоторыми скинами вылезают артефакты 🙂
Интересный пример:) Но я все равно отказался от всего, использую стиль борюров bsnone. Поэтому панель можно и в качестве заголовка считать.
Много неприятностей с этими бордюрами и системными заголовками, я сделал иллюзию этого всего. Ничего не мигает, не тормозит, все работает как нужно. И выглядит нормально, по-моему:)
AlphaControls очень сильно помогли с решением всех вопросов, связанных с дизайном. Раньше я всё делал на одних Image 😆 Это было жестоко.
TCountParticipant'Support' wrote:Одновременно для двух форм не получится это сделать.
Поэтому пришлось отказаться от ExtendedBorders и рисовать обычные рамки. В приницпе, это даже лучше.
Но а может как-то тень вокруг всего окна можно приделать, не используя ExtendedBorders и не прибегая к установке обычной тени средствами WinApi?
TCountParticipant'elpik' wrote:Вопросы:
1) Такое возможно средствами GDI, или для этого понадобится GDI+?
2) Можно ли добавить такой компонент в палитру который будет прокручивать текст над прямоугольником контрола?
Вот как раз я и написал копмонент на основе прозрачного канваса, на котором рисуется текст. И думал его добавить в заголовок.
TCountParticipant'Support' wrote:Не реально.
А в TsTitleBar можно слева и справа создать пустые пункты и менять попиксельно их ширины.
Тот, что посредине, с текстом, будет сдвигаться. Но, конечно возиться нужно и как-то некрасиво это все.
Не говоря уже о том, что заголовок все время перерисовываться будет.
В принципе, от этой бегущей строки можно и отказаться. Только меня смущает еще один нюанс – изменение расстояния между итемами в tsTitleBar.
Например, мне нужно уменьшить расстояние между несколькими кнопками. Искал в свойствах самого tsTitleBar'а, а в редакторе скинов нашел только установку отступов от границ заголовка.
TCountParticipant'Support' wrote:Это можно попробовать сделать с помощью TsTitleBar.
Динамически текст менять, а компонент сам нарисует.
Вы имеете ввиду программно менять Caption в итеме TsTitleBar, чтобы получилась бегущая строка?
Если да, то мне бы хотелось плавное движение, попиксельное, иначе получается побуквенный сдвиг.
У меня есть готовый комонент, который я написал (бегущая строка). Я его накладываю на панель и все нормально.
Просто я еще думал, что можно программно его кинуть в TitleBar.
TCountParticipant'Support' wrote:Через Canvas не получится. Нужно получать контекст устройства окна
и на него выводить при получении WM_NCPAINT. Спасибо за ответ, что-то подобное пробовал, но наверное все-таки пока буду использовать обычную панель вместо заголовка с TitleBar'ом.
TCountParticipant'Support' wrote:При изменении AlphaBlend и AlphaBlendValue скины не получают сообщение, что нужно что-то обновить, поэтому такое поведение.
Бордюры можно сразу обновить вручную:
if sSkinProvider1.BorderForm <> nil then
sSkinProvider1.BorderForm.UpdateExBordersPos(Redraw: boolean = True; Blend: byte = MaxByte);
Огромное спасибо! Именно то, что поддержка прописала :a7:
-
AuthorPosts