Текущий архив: 2009.09.13;
Скачать: CL | DM;
Вниз
Кнопки в системном меню (Стиль Windows XP) Найти похожие ветки
← →
DV-Karpov (2009-07-15 05:41) [0]Как изменить положение кнопок в системном меню, так чтобы кнопка "Закрыть" была расположена слева, а кнопка "Свернуть" справа (пример программа QIP). При этом необходимо что бы кнопки выглядели в соответствии со стилем, выбранным в операционной системе.
DrawFrameControl не подходит, так как она рисует обычные кнопки, которые не соответствуют стилю.
← →
Anatoly Podgoretsky © (2009-07-15 07:20) [1]Вот людям заняться нечем.
← →
DV-Karpov (2009-07-15 07:32) [2]
> Вот людям заняться нечем.
Это не ответ на вопрос. В общем то я задал вопрос не для того чтоб услышать есть мне чем заниматься или не чем. Если вы не в состоянии ответиь по теме, то не надо лесть....
← →
brother © (2009-07-15 07:39) [3]1. BorderStyle = bsNone и делай свои кнопки какие тебе угодно.
2. "Таскание" формы придется делать вручную (но гугл тебе поможет)
зы
> При этом необходимо что бы кнопки выглядели в соответствии
> со стилем, выбранным в операционной системе.
там два стиля) картинок кнопок будет 4 шт.
← →
brother © (2009-07-15 07:40) [4]> там два стиля) картинок кнопок будет 4 шт.
эээ те 8 (нажата/отжата)
← →
DV-Karpov (2009-07-15 08:01) [5]А проще варианта нет?
← →
DV-Karpov (2009-07-15 08:05) [6]
> А проще варианта нет?
Получится больше чем 8 картинок. Когда курсор мыши на кнопке она тоже изменяется.
← →
brother © (2009-07-15 08:06) [7]> А проще варианта нет?
Qip между прочим, сам свой интерфейс создает)
> [6] DV-Karpov (15.07.09 08:05)
>
> > А проще варианта нет?
>
> Получится больше чем 8 картинок. Когда курсор мыши на кнопке
> она тоже изменяется.
10 и что?
← →
DV-Karpov (2009-07-15 08:22) [8]Интересно и где в Qip хранятся этих 10 кнопок? В ресурсе *.exe не чего нет?
← →
brother © (2009-07-15 08:59) [9]> Интересно и где в Qip хранятся этих 10 кнопок?
это к разработчикам.
← →
DV-Karpov (2009-07-15 09:33) [10]Может все-таки существует другой вариант? слишком получается много кода для двух кнопок.
← →
brother © (2009-07-15 09:36) [11]ты пойми, то что ты хочешь сделать - не стандарный интерфейс от MS, следовательно, бубен в руки и вперед!
> слишком получается много кода для двух кнопок.
это еще с чего бы вдруг?
← →
brother © (2009-07-15 09:37) [12]> это еще с чего бы вдруг?
2 image подожишь на форму, а там только действия на события...
← →
brother © (2009-07-15 09:40) [13]кстати...
> (пример программа QIP). При этом необходимо что бы кнопки
> выглядели в соответствии со стилем, выбранным в операционной
> системе.
кип к стилю не привязывается...
← →
Anatoly Podgoretsky © (2009-07-15 09:54) [14]> DV-Karpov (15.07.2009 09:33:10) [10]
Терпи казак, раз делать нечего.
← →
Виктор85 (2009-07-15 09:54) [15]Вот, выдрал когда-то компонент из Indy и сделал кнопки в xp стиле.
{
Компонент отображающий панель заголовка в стиле Windows
}
unit isCaptionBarUnit;
interface
uses
Windows, Forms, SysUtils, Classes, Controls, ExtCtrls, Buttons, Graphics, GraphUtil,
Types, Themes;
type
TisCapBtnStyle = (capClose, capMax, capMin, capRestore, capHelp);
TisCapBtnStyles = set of TisCapBtnStyle;
TisCapBtnEvent = procedure(Sender: TObject; Button: TisCapBtnStyle) of object;
TisCaptionBtn = class(TGraphicControl)
private
FOwner: TComponent;
FStyle: TisCapBtnStyle;
FMouseDown: Boolean;
FDown: Boolean;
FFlat: Boolean;
FOver: Boolean;
procedure BtnClick;
procedure PaintThemes;
procedure PaintClassic;
procedure SetFlat(Value: Boolean);
procedure SetStyle(const Value: TisCapBtnStyle);
protected
procedure Click; override;
procedure Paint; override;
procedure MouseDown(Button: TMouseButton; Shift: TShiftState; X, Y: Integer); override;
procedure MouseUp(Button: TMouseButton; Shift: TShiftState; X, Y: Integer); override;
procedure MouseMove(Shift: TShiftState; X, Y: Integer); override;
public
constructor Create(AOwner: TComponent); override;
property Visible default False;
property Flat: Boolean read FFlat write SetFlat default False;
property Style: TisCapBtnStyle read FStyle write SetStyle default capClose;
end;
implementation
const
PADDING_TOP = 4;
PADDING_LEFT = 8;
PADDING_RIGHT = 4;
{ TisCaptionBtn }
procedure TisCaptionBtn.SetFlat(Value: Boolean);
begin
if FFlat <> Value then
begin
FFlat := Value;
Invalidate;
end;
end;
procedure TisCaptionBtn.SetStyle(const Value: TisCapBtnStyle);
begin
if FStyle <> Value then
begin
FStyle := Value;
Invalidate;
end;
end;
procedure TisCaptionBtn.BtnClick;
begin
if FOwner is TisCaptionBar then
TisCaptionBar(FOwner).ClickButton(Style);
end;
procedure TisCaptionBtn.Click;
begin
inherited Click;
BtnClick;
end;
constructor TisCaptionBtn.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
FOwner := AOwner;
Width := GetSystemMetrics(SM_CYCAPTION) - 3;
Height := Width - 2;
FStyle := capClose;
Visible := False;
FFlat := False;
end;
procedure TisCaptionBtn.MouseDown(Button: TMouseButton; Shift: TShiftState; X,
Y: Integer);
begin
if not Enabled then
Exit;
inherited MouseDown(Button, Shift, X, Y);
if not FMouseDown then
begin
FMouseDown := True;
FDown := True;
Repaint;
end;
end;
procedure TisCaptionBtn.MouseMove(Shift: TShiftState; X, Y: Integer);
begin
inherited MouseMove(Shift, X, Y);
if FMouseDown then
begin
FOver := PtInRect(ClientRect, Point(X, Y));
if not FOver then
begin
if FDown then { mouse has slid off, so release }
begin
FDown := False;
Repaint;
end;
end
else
begin
if not FDown then { mouse has slid back on, so push }
begin
FDown := True;
Repaint;
end;
end;
end;
end;
procedure TisCaptionBtn.MouseUp(Button: TMouseButton; Shift: TShiftState; X,
Y: Integer);
begin
if not Enabled then
Exit;
inherited MouseUp(Button, Shift, X, Y);
if FMouseDown then
begin
FMouseDown := False;
FDown := False;
Repaint;
end;
end;
procedure TisCaptionBtn.Paint;
begin
if not Visible then
Exit;
if ThemeServices.ThemesEnabled then
PaintThemes
else
PaintClassic;
end;
procedure TisCaptionBtn.PaintClassic;
var
R: TRect;
Flags: Integer;
begin
Flags := 0;
case FStyle of
capClose:
Flags := DFCS_CAPTIONCLOSE;
capMax:
Flags := DFCS_CAPTIONMAX;
capMin:
Flags := DFCS_CAPTIONMIN;
capRestore:
Flags := DFCS_CAPTIONRESTORE;
capHelp:
Flags := DFCS_CAPTIONHELP;
end;
if not Enabled then
Flags := Flags or DFCS_INACTIVE
else
if FDown and FMouseDown and Enabled then
Flags := Flags or DFCS_PUSHED;
if FFlat then
Flags := Flags or DFCS_FLAT;
Canvas.Brush.Color := Color;
SetBkMode(Canvas.Handle, TRANSPARENT);
DrawFrameControl(Canvas.Handle, ClientRect, DFC_CAPTION, Flags);
if FFlat then
begin
R := ClientRect;
if FDown and FMouseDown then
Frame3D(Canvas, R, clBtnShadow, clBtnHighLight, 1)
else
if FOver then
Frame3D(Canvas, R, clBtnHighLight, clBtnShadow, 1)
else
Frame3D(Canvas, R, clBtnFace, clBtnFace, 1);
end;
end;
procedure TisCaptionBtn.PaintThemes;
var
R: TRect;
Elenment: TThemedWindow;
Details: TThemedElementDetails;
begin
R := ClientRect;
with ThemeServices do
begin
//В зависимости от параметров получаем элемент
case FStyle of
capClose:
begin
Elenment := twCloseButtonNormal;
if not Enabled then
Elenment := twCloseButtonDisabled;
if FDown and FMouseDown and Enabled then
Elenment := twCloseButtonPushed;
end;
capMax:
begin
Elenment := twMaxButtonNormal;
if not Enabled then
Elenment := twMaxButtonDisabled;
if FDown and FMouseDown and Enabled then
Elenment := twMaxButtonPushed;
end;
capMin:
begin
Elenment := twMinButtonNormal;
if not Enabled then
Elenment := twMinButtonDisabled;
if FDown and FMouseDown and Enabled then
Elenment := twMinButtonPushed;
end;
capRestore:
begin
Elenment := twRestoreButtonNormal;
if not Enabled then
Elenment := twRestoreButtonDisabled;
if FDown and FMouseDown and Enabled then
Elenment := twRestoreButtonPushed;
end;
capHelp:
begin
Elenment := twHelpButtonNormal;
if not Enabled then
Elenment := twHelpButtonNormal;
if FDown and FMouseDown and Enabled then
Elenment := twHelpButtonNormal;
end;
end;
Details := GetElementDetails(Elenment);
DrawElement(Canvas.Handle, Details, R);
end;
end;
← →
DV-Karpov (2009-07-15 10:13) [16]
> кип к стилю не привязывается...
Да действительно....
Попробуй открыть Qip и поменять при этом стиль окон в операционной системе. Окно сразу изменится.
Да и сами кнопки, как и у остальных окон.... Причем кнопки в точности такие же, как у остальных окон. и меняются так же (активное окно, кнопка нажата, курсор, на кнопке)
Или попробуй тот же Qip на Vista. положение кнопок не меняется.
← →
DV-Karpov (2009-07-15 10:23) [17]
> Виктор85
А что такое TisCaptionBar ?
← →
brother © (2009-07-15 10:33) [18]> Попробуй открыть Qip и поменять при этом стиль окон в операционной
> системе. Окно сразу изменится.
> Да и сами кнопки, как и у остальных окон.... Причем кнопки
> в точности такие же, как у остальных окон. и меняются так
> же (активное окно, кнопка нажата, курсор, на кнопке)
> Или попробуй тот же Qip на Vista. положение кнопок не меняется.
сколько ты готов заплатить за эти эксперименты?
← →
DV-Karpov (2009-07-15 10:37) [19]
> сколько ты готов заплатить за эти эксперименты?
Заплатить?
А ты представь себя на субботнике ))))
← →
brother © (2009-07-15 10:39) [20]> А ты представь себя на субботнике ))))
Тогда узнать, как это делает кип твое домашнее задание, вариант тебе я подсказал... дальше сам...
← →
DV-Karpov (2009-07-15 10:51) [21]
> Тогда узнать, как это делает кип твое домашнее задание,
> вариант тебе я подсказал... дальше сам...
Очень смешно...
← →
brother © (2009-07-15 11:06) [22]> Очень смешно...
> А ты представь себя на субботнике ))))
Видимо тебе да...
← →
Виктор85 (2009-07-15 11:35) [23]
> А что такое TisCaptionBar ?
Это немного переделанный компонент из Jedi.
Вот ссылка, попробуй под себя перепиши расположив кнопки в нужном месте, а заголовок чтоб выводился по центру.
http://narod.ru/disk/10939367000/isCaptionBarUnit.rar.html
← →
Игорь Шевченко © (2009-07-15 11:40) [24]Еще один экземпляр с непомерно развитым чувством долга
← →
DV-Karpov (2009-07-15 11:55) [25]
> Еще один экземпляр с непомерно развитым чувством долга
Вы сейчас про что?
← →
DV-Karpov (2009-07-15 11:56) [26]
> Виктор85
Спасибо за ссылку это то что нужно.
← →
Кто б сомневался © (2009-07-15 15:07) [27]А зачем это все нужно? Для того чтобы не было дискриминации левшей?
← →
axis_of_evil © (2009-07-15 15:24) [28]для дискриминации правшей %>
← →
Palladin © (2009-07-15 15:35) [29]Скорее это все для "крутой гламурности". )
← →
Anatoly Podgoretsky © (2009-07-15 15:43) [30]> Palladin (15.07.2009 15:35:29) [29]
Наверно, чтобы не работать.
← →
Дмитрий (2009-07-16 07:03) [31]
> Anatoly
Тожно чтобы не работать....)))
← →
TIF © (2009-07-16 07:40) [32]Сразу скажу - тему не читал, только пробежался по ней глазами. Жаждущим попинать - пните меня к решению )
У меня вопрос по той же части, насчёт заголовка окна и кнопочек.
Как вообще убрать кнопку "развернуть"? Не просто деактивировать, но и вообще убрать её с глаз долой, оставив только "крестик" и "Свернуть"?
← →
oldman © (2009-07-16 12:08) [33]
> Как изменить положение кнопок в системном меню, так чтобы
> кнопка "Закрыть" была расположена слева, а кнопка "Свернуть"
> справа
Руки бы оторвал!!!
← →
brother © (2009-07-16 12:12) [34]ну не любят люди стиль от M$, ну бывает...
← →
oldman © (2009-07-16 12:25) [35]
> brother © (16.07.09 12:12) [34]
> ну не любят люди стиль от M$, ну бывает...
особенно веселит иногда кнопка "Close" на главной форме при полном отсутствии кода в OnClose...
← →
brother © (2009-07-16 12:26) [36]> особенно веселит иногда кнопка "Close" на главной форме
> при полном отсутствии кода в OnClose...
О_о я не понял? те?
← →
Anatoly Podgoretsky © (2009-07-16 13:22) [37]> oldman (16.07.2009 12:08:33) [33]
Добренький ты!
← →
Anatoly Podgoretsky © (2009-07-16 13:23) [38]> oldman (16.07.2009 12:25:35) [35]
У меня обычное дело, когда код не нужен.
← →
oldman © (2009-07-16 13:26) [39]
> Anatoly Podgoretsky © (16.07.09 13:23) [38]
> > oldman (16.07.2009 12:25:35) [35]
А на крестик пользователю нажать лень?
А вставить опцию "Выход" в MainMenu лень?
Страницы: 1 вся ветка
Текущий архив: 2009.09.13;
Скачать: CL | DM;
Память: 0.57 MB
Время: 0.015 c