Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.02.03;
Скачать: CL | DM;

Вниз

Tray   Найти похожие ветки 

 
user_   (2007-12-26 11:33) [0]

Как сделать в программе MDI свой собственный Tray чтоб когда окошки сворачивал они поевлялись в Tray-и и я могг выбирать нужное мне окно...


 
clickmaker ©   (2007-12-26 11:34) [1]

TTabControl, закладки можно в виде кнопок сделать


 
Kerk ©   (2007-12-26 11:34) [2]

Берешь и делаешь. В чем конкретно проблема?


 
user_   (2007-12-26 11:36) [3]


> Kerk ©   (26.12.07 11:34) [2]

Да хоть бы на исходник какой глянуть (пример), а то вообще не соображу как сделать...


 
Rouse_ ©   (2007-12-26 11:49) [4]

Хм... а идейка-то интересная :)
Вообще самое оптимальное через TToolBar расположенный на главной форме внизу...


 
user_   (2007-12-26 11:52) [5]


> Rouse_ ©   (26.12.07 11:49) [4]

Пытаюсь реализовать через ""скилет" Application, но забрел так долеко что сам не пойму че наделал....


 
user_   (2007-12-26 11:56) [6]

А подталкноло меня к этой идеотской мысли во это:
http://www.reintell.ru/index.php?id=23
Если хорошо пресмотрется то там можно увидеть Tray. :o)


 
guav ©   (2007-12-26 11:57) [7]

Где-то в инете находил Windows 2000 Source Code, похоже что то действительно кусок кода Windows, там есть код, отвечающий за трей :)


 
clickmaker ©   (2007-12-26 11:58) [8]


> [6] user_   (26.12.07 11:56)

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


 
user_   (2007-12-26 11:59) [9]


> clickmaker ©   (26.12.07 11:58) [8]

Блин, но это надо TabSheet использовать, а я хотел окна Child-ы...


 
clickmaker ©   (2007-12-26 12:00) [10]


> [9] user_   (26.12.07 11:59)

нахрена?
не надо TabSheet. Только закладки в виде кнопок. На событие смены закладки вешаешь показ окна


 
guav ©   (2007-12-26 12:01) [11]

ToolBar имхо даже больше чем трей, тулбаровские кнопки почти как TButton.
Не визуально нажимаемые и не получающие фокус кнопки и самому нарисовать на пинтбоксе, панели или в статусбаре не долго.


 
Ketmar_   (2007-12-26 12:12) [12]

а я вообще в режиме brain-off делал панель, на которую тбатоны кидал.


 
Eraser ©   (2007-12-26 12:17) [13]


> user_   (26.12.07 11:33) 

Gero (c) вроде что-то такое делал для DMClient, при желании можно найти.


 
clickmaker ©   (2007-12-26 12:19) [14]


> Gero (c) вроде что-то такое делал для DMClient

там TabControl


 
Админ   (2007-12-26 12:24) [15]

Так это же не Tray называется, а TaskBar, вроде.

http://www.torry.net/pages.php?id=19


 
Rouse_ ©   (2007-12-26 13:00) [16]

Я только не понимаю про таб контрол, трей даже оригинальный на тулбаре основан, точнее на ToolbarWindow32 :)


 
user_   (2007-12-26 13:02) [17]


> Rouse_ ©   (26.12.07 13:00) [16]

+5


 
user_   (2007-12-26 13:25) [18]

Вот пример
http://www.torry.net/vcl/bars/taskbars/axtaskbar.zip
из того что дал
Админ   (26.12.07 12:24) [15]

Но чегото компонент я с этого сделать не могу? Почему?


 
user_   (2007-12-26 13:26) [19]


unit TaskBar;

interface

uses
 Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
 ToolWin, ComCtrls;

type
 TTask = class(TObject)
    Task: TForm;
    ToolButton: TToolButton;
    ParentBar: TToolBar;

    TaskList: TList;  { Parent }
    TaskOnActivate: TNotifyEvent;

    constructor Create(aTask: TForm; ImageIndex: Integer; BtnParent: TToolBar; aTaskList: TList);
    destructor Destroy; override;

    procedure ClickButton(Sender: TObject);
    procedure ButtonUp;
  end;

 TOnActivateTask = procedure(Sender: TObject; Task: TForm) of object;

 TTaskBar = class(TToolBar)
 private
   FCount: Integer;
   FShowed: Boolean;
   TaskList: TList;

   procedure SetShowed(Value: Boolean);
 protected
 public
   constructor Create(aOwner: TComponent); override;
   destructor Destroy; override;

   procedure Add(Task: TForm; ImageIndex: Integer);
   procedure Remove(Task: TForm);
   procedure RedrawCaptions;
 published
   property Count: Integer read FCount;
   property Showed: Boolean read FShowed write SetShowed;
 end;

procedure Register;

implementation

constructor TTask.Create(aTask: TForm; ImageIndex: Integer; BtnParent: TToolBar; aTaskList: TList);
begin
 Task := aTask;
 TaskOnActivate := Task.OnActivate;
 Task.OnActivate := ClickButton;
 TaskList := aTaskList;
 ButtonUp;
 ToolButton := TToolButton.Create(BtnParent);
 ToolButton.Caption := aTask.Caption;
 ToolButton.ImageIndex := ImageIndex;
 ToolButton.OnClick := ClickButton;
 BtnParent.InsertControl(ToolButton);
 ToolButton.Grouped := True;
 ToolButton.AllowAllUp := True;
 ToolButton.AutoSize := True;
 ToolButton.Down := True;
 ParentBar := BtnParent;
end;

destructor TTask.Destroy;
begin
 ParentBar.RemoveControl(ToolButton);
 ToolButton.Free;
 inherited Destroy;
end;

procedure TTask.ClickButton(Sender: TObject);
var
 i: Integer;
 CurrentTask: TTask;
begin
 ButtonUp;
 if (Sender.ClassName = "TToolButton") then
  (Sender as TToolButton).Down := True
 else
  begin
   i := TaskList.Count;
   if i <> 0 then
    for i := 0 to i - 1 do
     begin
      CurrentTask := TaskList[i];
      if CurrentTask.Task = Sender then
       begin
        CurrentTask.ToolButton.Down := True;
        Break;
       end;
     end;
  end;
 SendMessage(Task.Handle, wm_NCActivate, wa_Active, 0);

{ Thanks Markus Stephany for next line:
MS> when i changed to a different mdi child with e.g.
MS> a memo control on it, the caret was not visible every time }
 SendMessage(Task.Handle, WM_ChildActivate, 0, 0);
 
 Task.SetFocus;
 Task.BringToFront;

 // Restore from icon
 if Task.WindowState = wsMinimized then
  Task.WindowState := wsNormal;

 if Assigned(TaskOnActivate) then
  TaskOnActivate(Sender);
end;

procedure TTask.ButtonUp;
var
 i: Integer;
 CurrentTask: TTask;
begin
 i := TaskList.Count;
 if i <> 0 then
  for i := 0 to i - 1 do
   begin
    CurrentTask := TaskList[i];
    if CurrentTask.ToolButton.Down then
     CurrentTask.ToolButton.Down := False;
   end;
end;

{ TTaskBar }

constructor TTaskBar.Create(aOwner: TComponent);
begin
 inherited Create(aOwner);
 ShowCaptions := True;
 List := True;
 Visible := False;
 FShowed := True;
 TaskList := TList.Create;
end;

destructor TTaskBar.Destroy;
begin
 TaskList.Free;
 inherited Destroy;
end;

procedure TTaskBar.Add(Task: TForm; ImageIndex: Integer);
var
 i: Integer;
 CurrentTask: TTask;
begin
 if Task <> nil then
  begin
   i := TaskList.Count;
   if i <> 0 then
    for i := 0 to i - 1 do
     begin
      CurrentTask := TaskList[i];
      if CurrentTask.Task = Task then Exit;
     end;
   CurrentTask := TTask.Create(Task, ImageIndex, Self, TaskList);
   TaskList.Add(CurrentTask);
   FCount := TaskList.Count;
   if (FCount > 0) and not Visible and FShowed then Visible := True;
  end;
end;

procedure TTaskBar.Remove(Task: TForm);
var
 i: Integer;
 CurrentTask: TTask;
begin
 if Task <> nil then
  begin
   i := TaskList.Count;
   if i <> 0 then
    for i := 0 to i - 1 do
     begin
      CurrentTask := TaskList[i];
      if CurrentTask.Task = Task then
       begin
        TaskList.Remove(CurrentTask);
        CurrentTask.Free;
        Break;
       end;
     end;
   FCount := TaskList.Count;
   if (FCount = 0) and Visible then Visible := False;
  end;
end;

procedure TTaskBar.RedrawCaptions;
var
 i: Integer;
 CurrentTask: TTask;
begin
 if FCount <> 0 then
  for i := 0 to FCount - 1 do
   begin
    CurrentTask := TaskList[i];
    with CurrentTask do
     if Task.Caption <> ToolButton.Caption then
      ToolButton.Caption := Task.Caption;
   end;
end;

procedure TTaskBar.SetShowed(Value: Boolean);
begin
 if FShowed <> Value then
  begin
   if not FShowed and (FCount > 0) then
    Visible := True
   else Visible := False;
   
   FShowed := Value;
  end;
end;

procedure Register;
begin
 RegisterComponents("Xacker", [TTaskBar]);
end;

end.


 
user_   (2007-12-26 13:27) [20]

Да еще соглашение...

{*************************************************************}
{            TTaskBar Component for Delphi IV                 }
{ Version:   1.01                                             }
{ Author:    Aleksey Kuznetsov                                }
{ E-Mail:    info@utilmind.com                                }
{ Homepage:  http://www.utilmind.com                          }
{ Created:   January 25, 1999                                 }
{ Modified:  February 12, 1999                                }
{ Legal:     Copyright (c) 1999, UtilMind Solutions           }
{-------------------------------------------------------------}
{ Thanks:    Markus Stephany (mirbir.st@t-online.de)          }
{                http://home.t-online.de/home/mirbir.st       }
{*************************************************************}
{ TaskBar Panel - inherited from TToolBar. Added some useful  }
{ functions. See example (MDIApp).                            }
{*************************************************************}
{                    IMPORTANT NOTE:                          }
{  This code may be used and modified by anyone so long as    }
{ this header and copyright information remains intact. By    }
{ using this code you agree to indemnify UtilMind Solutions   }
{ from any liability that might arise from its use. You must  }
{ obtain written consent before selling or redistributing     }
{ this code.                                                  }
{*************************************************************}
{  Properties:                                                }
{          Count: Indicates the number of entries (tasks) in  }
{                 the TaskList.                               }
{         Showed: VISIBLE (!!!) TaskBar can be not always     }
{                 visible.                                    }
{     Methods:                                                }
{            Add: Adds Task to TaskList.                      }
{         Remove: Removes Task from TaskList.                 }
{ RedrawCaptions: Redraws all captions (if they changed).     }
{*************************************************************}
{ FOR MUCH MORE INFORMATION - SEE DEMO PROGRAM.               }
{*************************************************************}
{ Thanks for using TTaskBar component.                        }
{ If at occurrence of any questions concerning these          }
{ components, drop us mail: info@utilmind.com                 }
{*************************************************************}


 
user_   (2007-12-26 13:27) [21]

Среда D7, ОС XP


 
user_   (2007-12-26 13:27) [22]

Среда D7, ОС XP


 
DVM ©   (2007-12-26 13:31) [23]


> Я только не понимаю про таб контрол, трей даже оригинальный
> на тулбаре основан, точнее на ToolbarWindow32 :)

это в Win2000 и выше он на тулбаре, а до этого иконки просто рисовались на поверхности окна области уведомлений.

Сделать трей на табконтроле ничуть не сложнее, чем на тулбаре. Я делал даже. Во http://dvmuratov.narod.ru/myshell.zip


 
user_   (2007-12-26 13:37) [24]

Прикольно, а где же исходники....? :-)))


 
clickmaker ©   (2007-12-26 13:41) [25]


> [24] user_   (26.12.07 13:37)

не понимаю, чего сложного? Проблема динамически добавлять кнопки на тулбар или закладки на табконтрол? С привязыванием формы к свойству Tag


 
user_   (2007-12-26 13:47) [26]


> DVM ©   (26.12.07 13:31) [23]

Ну так между нами какой пароль, а то я запустил а выйти не могу..... :-)
А в Analyzery SQL запрос выполняется, а я снимаю с деспечера он мне показавает выключить компьютер..... :)))


 
{RASkov} ©   (2007-12-26 13:50) [27]

> [23] DVM ©   (26.12.07 13:31)

Пароль какой? :)
Как эту "байду" выключить???? Аааа((
:о)


 
@!!ex ©   (2007-12-26 13:51) [28]

> [27] {RASkov} ©   (26.12.07 13:50)

Reboot...
Даже закрытие не помогает, т.к. explorer как shell не запускается.


 
{RASkov} ©   (2007-12-26 13:52) [29]

> [28] @!!ex ©   (26.12.07 13:51)

Тоже "влип"? :)))


 
DVM ©   (2007-12-26 13:54) [30]


> Как эту "байду" выключить???? Аааа((

3141592653


 
DVM ©   (2007-12-26 13:55) [31]

сорри, забыл про пароль :)


 
user_   (2007-12-26 13:55) [32]


> DVM ©   (26.12.07 13:54) [30]

Спасибо я уже перезагрузился... :-)


 
user_   (2007-12-26 13:57) [33]


> DVM ©

100 пудов веря подсодил размножатся.....
Бу... гагага... :-))))

Хоть бы разрешения вернул назад.... гыгыгы


 
DVM ©   (2007-12-26 14:04) [34]


> Хоть бы разрешения вернул назад.... гыгыгы

это оболочка для клуба одного делалась, потому и разрешение меняется принудительно. Чтобы не менялось, выкинуть из папки Plugins файл ResKeeper.plg. Вирей там нет, можете не волноваться.


 
user_   (2007-12-26 14:06) [35]

Но прокси у меня слетать начал....

А исходнички имеются....


 
DVM ©   (2007-12-26 14:18) [36]


> Но прокси у меня слетать начал....

Не должно вообще то, единственное, в чем моя прога касается сети, так это подгружает и потом выгружает так называемые ShellServiceObjects, в числе коих и те, что создают иконки сетевых подключений. Но после выгрузки они исчезают и из эксплорера. Победить не удалось эту проблему. Не думаю, что прокси с этим завязан.


> А исходнички имеются....

да.


 
user_   (2007-12-26 14:35) [37]


> DVM ©   (26.12.07 14:18) [36]

Исикока в руб. будет ?


 
@!!ex ©   (2007-12-26 14:37) [38]

> [37] user_   (26.12.07 14:35)

Скорее всего дохрена...


 
user_   (2007-12-26 14:39) [39]

Хорошо начнем с 10
и скажи на сколько нужно умножить ? :-)


 
DVM ©   (2007-12-26 14:39) [40]


> Исикока в руб. будет ?

Нискока и еще маленько. Зачем они тебе? Там все на "чиста WINAPI", никаким VCL там и не пахнет. Да и с твоей задачей их связывает только отчасти понятие Tray.



Страницы: 1 2 вся ветка

Текущий архив: 2008.02.03;
Скачать: CL | DM;

Наверх




Память: 0.57 MB
Время: 0.021 c
2-1199430043
Andreil
2008-01-04 10:00
2008.02.03
Вызов ДЛЛ из ЕХЕ


15-1198487954
Kolan
2007-12-24 12:19
2008.02.03
А DBX есть в BDS 2006?


2-1200027140
No_Dead
2008-01-11 07:52
2008.02.03
я вот че-то не могу понять потоки:(


2-1199846158
Vista
2008-01-09 05:35
2008.02.03
проблема с событием.


2-1199617113
deadteachers
2008-01-06 13:58
2008.02.03
Ускорить процесс загрузки?