Имя пользователя:
Пароль:
 | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Delphi - [решено] Пустой заголовок формы

Ответить
Настройки темы
Delphi - [решено] Пустой заголовок формы

Аватара для Malfatto

Storm Spirit


Сообщения: 467
Благодарности: 33


Конфигурация

Профиль | Отправить PM | Цитировать


Всем доброй ночи.

Как убрать заголовок у формы так, чтобы на панели задач надпись по-прежнему оставалась?

То есть форма с пустым заголовком (Caption = ''), а кнопка на панели задач заголовок имеет.

Отправлено: 00:03, 30-08-2011

 

Аватара для Delirium

Ветеран


Сообщения: 5624
Благодарности: 936

Профиль | Отправить PM | Цитировать


Не подскажу насчет делфи, в C# делается примерно так - http://www.codeproject.com/KB/cs/Cus...mByArijit.aspx .
Можно изменить цвет текста заголовка, чтобы он сливался с фоном.
На делфи вроде бы так: http://stackoverflow.com/questions/2...ions-title-bar

-------

Пройденные курсы:
[Microsoft №10174 Sharepoint], [SharePoint]
Мои проекты:[CheckAdmins], [NetSend7], [System Uptime], [Remote RAdmin LogViewer],[Netdom GDI], [Holidays - напоминалка о днях рождения]

А я офис-гуру :)


Отправлено: 03:51, 30-08-2011 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

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


Аватара для Malfatto

Storm Spirit


Сообщения: 467
Благодарности: 33

Профиль | Отправить PM | Цитировать


Цитата Delirium:
Можно изменить цвет текста заголовка, чтобы он сливался с фоном. »
очень странный метод, к тому же, на той же windows 7 это очень просто обнаружить.

Отправлено: 06:15, 30-08-2011 | #3


Аватара для Malfatto

Storm Spirit


Сообщения: 467
Благодарности: 33

Профиль | Отправить PM | Цитировать


всё, я таки придумал решение:

блок interface:

Код: Выделить весь код
  TTaskBarButton = class(TObject)
  private
    FCaption: String;
    FHandle: HWND;
    procedure SetCaption(ACaption: String);
  public
    property Caption: String read FCaption write SetCaption;
    property Handle: HWND read FHandle;
    procedure Show;
    procedure Hide;
    constructor Create;
    destructor Destroy; override;
  end;
блок implementation:

Код: Выделить весь код
procedure TTaskBarButton.SetCaption(ACaption: String);
begin
  FCaption:=ACaption;
  SetWindowText(Handle,ACaption);
end;

procedure TTaskBarButton.Show;
begin
  ShowWindow(FHandle,SW_SHOW);
end;

procedure TTaskBarButton.Hide;
begin
  ShowWindow(FHandle,SW_HIDE);
end;

function TaskBarProc(hWnd: HWND; Msg: UINT; wParam: WPARAM; lParam: LPARAM): LRESULT; stdcall;
begin
  if Msg <> WM_SYSCOMMAND then Result:=DefWindowProc(hWnd,Msg,wParam,lParam) else Result:=0;
end;

constructor TTaskBarButton.Create;
var
  WindowClass: TWndClass;
begin
  inherited;
  WindowClass.style:=CS_HREDRAW or CS_VREDRAW;
  WindowClass.lpfnWndProc:=@TaskBarProc;
  WindowClass.cbClsExtra:=0;
  WindowClass.cbWndExtra:=0;
  WindowClass.hInstance:=HInstance;
  WindowClass.hIcon:=LoadIcon(0,'MAINICON');
  WindowClass.hCursor:=LoadCursor(0,IDC_ARROW);
  WindowClass.hbrBackground:=COLOR_BTNFACE;
  WindowClass.lpszMenuName:=nil;
  WindowClass.lpszClassName:='TTaskBarButton';
  Windows.RegisterClass(WindowClass);
  FHandle:=CreateWindowEx(WS_EX_APPWINDOW,'TTaskBarButton',nil,WS_POPUP,0,0,0,0,0,0,HInstance,nil);
end;

destructor TTaskBarButton.Destroy;
begin
  Windows.UnregisterClass('TTaskBarButton',HInstance);
  inherited;
end;
объявить переменную (в блоке interface, разумеется):

Код: Выделить весь код
var
  TaskBarButton: TTaskBarButton;
в класс формы добавить (причём добавить для каждой формы, где отличается заголовок):

Код: Выделить весь код
  protected
    procedure CreateParams(var Params: TCreateParams); override;
реализация:

Код: Выделить весь код
procedure TForm1.CreateParams(var Params: TCreateParams);
begin
  inherited;
  Params.WndParent:=TaskBarButton.Handle;
end;
в основном файле программы сразу после begin:

Код: Выделить весь код
  TaskBarButton:=TTaskBarButton.Create;
  TaskBarButton.Caption:='Заголовок';
в конце вставить

Код: Выделить весь код
TaskBarButton.Free;
чтобы сменить заголовок - используйте TaskBarButton.Caption.
методы Show/Hide ясно что делают.

Последний раз редактировалось Malfatto, 30-08-2011 в 21:55.

Это сообщение посчитали полезным следующие участники:

Отправлено: 21:44, 30-08-2011 | #4



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Delphi - [решено] Пустой заголовок формы

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
[решено] Скопировать заголовок окна shadowbat AutoIt 9 15-06-2010 22:43
[решено] Отделить заголовок от html morgan1991 AutoIt 27 18-05-2010 20:29
Интерфейс - Заголовок проводника Malfatto Microsoft Windows Vista 2 22-09-2008 21:46
Win32 API - Подскажите заголовок функции AnsiToOem faterss Программирование и базы данных 3 03-07-2007 01:43




 
Переход