Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.01.2009, 15:24   #21
ViktorXP
Форумчанин
 
Аватар для ViktorXP
 
Регистрация: 24.11.2006
Сообщений: 108
По умолчанию

Цитата:
Сообщение от Шульц Посмотреть сообщение
DRKB имею, а World под вистой не хотеть работать..
Кто тебе такую глупость сказал? .

вот это первое окно это и есть ДельфВорлд, а аэро говорит что это виста.
ViktorXP вне форума Ответить с цитированием
Старый 18.01.2009, 15:32   #22
Шульц
Форумчанин
 
Регистрация: 14.09.2008
Сообщений: 172
По умолчанию

Хм... Значит у мя просто чет с самой прогой случилось.. Надо будет скачать и поглядеть.
Шипулин А. В.
Шульц вне форума Ответить с цитированием
Старый 18.01.2009, 15:37   #23
Шульц
Форумчанин
 
Регистрация: 14.09.2008
Сообщений: 172
По умолчанию

VictorXP, спасибо, вроде все понял, теперь дело за практикой Разберусь
Шипулин А. В.
Шульц вне форума Ответить с цитированием
Старый 18.01.2009, 16:06   #24
Alar
Александр
Администратор
 
Аватар для Alar
 
Регистрация: 28.10.2006
Сообщений: 17,501
По умолчанию

Щульц вы ничего не поняли!

Если вы работаете с windows формой вы можете использовать только предусмотренные api функции, например основной стиль окна может быть только таким

Цитата:
{ Window Styles }
{$EXTERNALSYM WS_OVERLAPPED}
WS_OVERLAPPED = 0;
{$EXTERNALSYM WS_POPUP}
WS_POPUP = DWORD($80000000);
{$EXTERNALSYM WS_CHILD}
WS_CHILD = $40000000;
{$EXTERNALSYM WS_MINIMIZE}
WS_MINIMIZE = $20000000;
{$EXTERNALSYM WS_VISIBLE}
WS_VISIBLE = $10000000;
{$EXTERNALSYM WS_DISABLED}
WS_DISABLED = $8000000;
{$EXTERNALSYM WS_CLIPSIBLINGS}
WS_CLIPSIBLINGS = $4000000;
{$EXTERNALSYM WS_CLIPCHILDREN}
WS_CLIPCHILDREN = $2000000;
{$EXTERNALSYM WS_MAXIMIZE}
WS_MAXIMIZE = $1000000;
{$EXTERNALSYM WS_CAPTION}
WS_CAPTION = $C00000; { WS_BORDER or WS_DLGFRAME }
{$EXTERNALSYM WS_BORDER}
WS_BORDER = $800000;
{$EXTERNALSYM WS_DLGFRAME}
WS_DLGFRAME = $400000;
{$EXTERNALSYM WS_VSCROLL}
WS_VSCROLL = $200000;
{$EXTERNALSYM WS_HSCROLL}
WS_HSCROLL = $100000;
{$EXTERNALSYM WS_SYSMENU}
WS_SYSMENU = $80000;
{$EXTERNALSYM WS_THICKFRAME}
WS_THICKFRAME = $40000;
{$EXTERNALSYM WS_GROUP}
WS_GROUP = $20000;
{$EXTERNALSYM WS_TABSTOP}
WS_TABSTOP = $10000;

{$EXTERNALSYM WS_MINIMIZEBOX}
WS_MINIMIZEBOX = $20000;
{$EXTERNALSYM WS_MAXIMIZEBOX}
WS_MAXIMIZEBOX = $10000;

{$EXTERNALSYM WS_TILED}
WS_TILED = WS_OVERLAPPED;
{$EXTERNALSYM WS_ICONIC}
WS_ICONIC = WS_MINIMIZE;
{$EXTERNALSYM WS_SIZEBOX}
WS_SIZEBOX = WS_THICKFRAME;
А закрасить, те полоски по бокам, что вам мешал вы можете и -

вот так допустим

Цитата:
procedure TForm1.MyPaint(var d: TWMNCPaint);
var
DC: THandle;
Brush: TBrush;
begin
DC := GetWindowDC(Handle);
Brush := TBrush.Create;
try
Brush.Color := clBlue;
finally
ReleaseDC(Handle, DC);
Brush.Free;
end;
end;
Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
      procedure CreateParams(var Params: TCreateParams); override;
  private
    procedure MyPaint(var d: TWMNCPaint); message WM_NCPAINT;
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

 procedure TForm1.CreateParams(var Params: TCreateParams) ;
begin
  BorderStyle := bsNone;

  inherited;
  Params.Style := Params.Style or WS_SIZEBOX;
  end;

procedure TForm1.MyPaint(var d: TWMNCPaint);
var
  DC: THandle;
  Brush: TBrush;
begin
  DC := GetWindowDC(Handle);
  Brush := TBrush.Create;
  try
    Brush.Color := clBlue;
  finally
    ReleaseDC(Handle, DC);
    Brush.Free;
  end;
end;

end.
А то что вам предложил Виктор, без именение стиля не пригодно для решаемой вами задачей, ибо caption формы никуда не пропадает. и если кликнуть вместе расположения кнопок вы обнаружите кнопки.
Alar вне форума Ответить с цитированием
Старый 18.01.2009, 16:14   #25
ViktorXP
Форумчанин
 
Аватар для ViktorXP
 
Регистрация: 24.11.2006
Сообщений: 108
По умолчанию

Цитата:
Сообщение от Alar Посмотреть сообщение
ибо caption формы никуда не пропадает.
так он и не появляется. вернее не отрисовывается.

Цитата:
Сообщение от Alar Посмотреть сообщение
и если кликнуть вместе расположения кнопок вы обнаружите кнопки.
потому что их никто не обрабатывает и они реагируют по умолчанию но если ты заметил то не реакцией стиля XP, а класического стиля. просто при включеном стеле експи сам заботится о создание красивых кнопочек и переносе всех реакций на их.

пс. но тут уже дело вкуса. кому как нравится тот так и решает проблемы

Последний раз редактировалось ViktorXP; 18.01.2009 в 16:20.
ViktorXP вне форума Ответить с цитированием
Старый 18.01.2009, 16:25   #26
Alar
Александр
Администратор
 
Аватар для Alar
 
Регистрация: 28.10.2006
Сообщений: 17,501
По умолчанию

ViktorXP, предложи как в caption подложку поставить в виде картинки, а по верх неё надпись наложить
или вот эти 28 пикселей и есть новый caption?
Alar вне форума Ответить с цитированием
Старый 18.01.2009, 16:50   #27
ViktorXP
Форумчанин
 
Аватар для ViktorXP
 
Регистрация: 24.11.2006
Сообщений: 108
По умолчанию

Цитата:
Сообщение от Alar Посмотреть сообщение
ViktorXP, предложи как в caption подложку поставить в виде картинки, а по верх неё надпись наложить
можна вопрос? а как глубоки ваши познания в WinApi?
я не приведу способ как рисовать рисунок ибо это примитивно, я лудше покажу как отрисовать елемент теме винды.
Код:
uses Themes;

var
  Theme: TThemeServices;


procedure TForm1.FormCreate(Sender: TObject);
begin
  Theme := ThemeServices;
end;

procedure TForm1.MyPaint(var d: TWMNCPaint);
var
  DC: THandle;
  Brush: TBrush;
  Elm: TThemedElementDetails;
  R: TRect;
  BkMode: Integer;
begin
  Elm := Theme.GetElementDetails(twCaptionActive); // Получаем елемент темы активного окна
  DC := GetWindowDC(Handle);
  Brush := TBrush.Create;
  try
    Brush.Color := clBlue;
    R := Rect(0,0,Width, 28);
    Theme.DrawElement(DC, Elm,R); // отрисовываем елемент
//    Theme.DrawText();  // текст и елемент можно вывести и так но пойдем другим способом
    BkMode := SetBkMode(DC, TRANSPARENT); // включаем просзрачный фон для отрисовки и запоминаем старое значение
    R.Left := 5;
    R.Top := 5;
    DrawText(DC, pchar(Caption), Length(Caption), R, DT_LEFT); // отрисовываем текст
//    FillRect(DC, Rect(0,0,Width, 28), Brush.Handle);
    FillRect(DC, Rect(0,28,8, Height), Brush.Handle);
    FillRect(DC, Rect(Width-8,28,Width, Height), Brush.Handle);
    FillRect(DC, Rect(0,Height-8,Width, Height), Brush.Handle);
    SetBkMode(DC, BkMode); // востанавливаем фон
  finally
    ReleaseDC(Handle, DC);
    Brush.Free;
  end;
end;
ViktorXP вне форума Ответить с цитированием
Старый 18.01.2009, 17:03   #28
maladoy
delphi-ст!
Форумчанин
 
Аватар для maladoy
 
Регистрация: 02.01.2009
Сообщений: 825
По умолчанию

Цитата:
Сообщение от Шульц Посмотреть сообщение
DRKB имею, а World под вистой не хотеть работать..
а ты его в режиме совместимости с хр запусти и будет работать...
.
вступлю в команду разработчиков ПО на Delphi
maladoy вне форума Ответить с цитированием
Старый 18.01.2009, 17:06   #29
ViktorXP
Форумчанин
 
Аватар для ViktorXP
 
Регистрация: 24.11.2006
Сообщений: 108
По умолчанию

Цитата:
Сообщение от Alar Посмотреть сообщение
или вот эти 28 пикселей и есть новый caption?
я уже говорил что эти пиксели высчитываются с помощю GetSystemMetrics и передаными ему параметрами (если зделать форму фиксированой то это число уменьшится). просто влом перечислять все параметры. дя и не обязан я все показывать на это есть MSDN и голова программиста
ViktorXP вне форума Ответить с цитированием
Старый 18.01.2009, 19:09   #30
Шульц
Форумчанин
 
Регистрация: 14.09.2008
Сообщений: 172
По умолчанию

Alar, Ваш способ не работает. Не закрашиваются бордюры. Так же остаются стандартные бордюры.
Шипулин А. В.
Шульц вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как изменить стиль гиперссылки? Нужно убрать рамку вокруг картинки. GLB HTML и CSS 5 18.01.2009 19:18
Как обновить\перерисовать рисунок на форме или компоненте? Selebro Общие вопросы C/C++ 1 21.12.2008 21:16
Висит процесс, как его можно убрать? HAMMAN Помощь студентам 5 16.05.2008 08:55
Как убрать (спрятать) кнопку Maximize на форме чтобы остались только Minimize и Close athlant64 Общие вопросы Delphi 15 11.11.2007 17:08
изменить размер шрифта в свойстве “Caption” формы (Form) Борис2 Компоненты Delphi 8 13.09.2007 20:36