Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Рабочий стол
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 25.04.2014, 10:57
Gudzik11 Gudzik11 вне форума
Начинающий
 
Регистрация: 27.09.2011
Сообщения: 158
Репутация: 10
По умолчанию зафиксировать место для формы

Здравствуйте не знаю как правельно обяснить что мнке нужно ?
У меня форма находитса над понелью задачь и мне нужно чтоб другие программы при открытии на весь экран не перекрывала мою форму тоесть как на картинке.
Изображения
Тип файла: jpg 1_640x602_600x500.jpg (77.6 Кбайт, 33 просмотров)
Ответить с цитированием
  #2  
Старый 25.04.2014, 13:10
Аватар для poli-smen
poli-smen poli-smen вне форума
Профессионал
 
Регистрация: 06.08.2012
Адрес: Кривой Рог
Сообщения: 1,791
Версия Delphi: Delphi 7, XE2
Репутация: 4415
По умолчанию

Цитата:
Сообщение от Gudzik11
У меня форма находитса над понелью задачь и мне нужно чтоб другие программы при открытии на весь экран не перекрывала мою форму тоесть как на картинке.
Тебе нужно делать своё приложение в виде "Панели инструментов рабочего стола"
Вот >здесь< уже готовый модуль AppBar.pas на Delphi (смотри в архиве демку в папке DemoApp)
Ответить с цитированием
Этот пользователь сказал Спасибо poli-smen за это полезное сообщение:
Gudzik11 (25.04.2014)
  #3  
Старый 25.04.2014, 16:57
Gudzik11 Gudzik11 вне форума
Начинающий
 
Регистрация: 27.09.2011
Сообщения: 158
Репутация: 10
По умолчанию

Спасибо! То что нужно .
Ответить с цитированием
  #4  
Старый 25.04.2014, 19:38
Gudzik11 Gudzik11 вне форума
Начинающий
 
Регистрация: 27.09.2011
Сообщения: 158
Репутация: 10
По умолчанию

Подскажите как пне сразу установить панель в нижний край экрана и запретить передвижение мышкой.
я просто ешё долго буду разбирать этот модуль
Ответить с цитированием
  #5  
Старый 25.04.2014, 22:58
Аватар для poli-smen
poli-smen poli-smen вне форума
Профессионал
 
Регистрация: 06.08.2012
Адрес: Кривой Рог
Сообщения: 1,791
Версия Delphi: Delphi 7, XE2
Репутация: 4415
По умолчанию

Цитата:
Сообщение от Gudzik11
Подскажите как пне сразу установить панель в нижний край экрана и запретить передвижение мышкой.
Чтобы создавалась сразу снизу - делаешь на событии OnCreate формы:
Код:
procedure TDemoBar.FormCreate(Sender: TObject);
begin
  Edge := abeBottom;
end;
Чтобы нельзя было мышкой перемещать или менять размер - проще всего перехватывать сообщение WM_NCHITTEST:
Код:
type
  TDemoBar = class(TAppBar)
.....
  protected
    procedure OnNCHitTest(var Msg: TWMNCHitTest); message WM_NCHITTEST;
  end;
.....
implementation
.....
procedure TDemoBar.OnNCHitTest(var Msg: TWMNCHitTest);
begin
  Msg.Result := HTCLIENT;
end;

Ну или же убрать перехват этого сообщения у класса TAppBar в модуле AppBar.
Ответить с цитированием
  #6  
Старый 25.04.2014, 23:52
Gudzik11 Gudzik11 вне форума
Начинающий
 
Регистрация: 27.09.2011
Сообщения: 158
Репутация: 10
По умолчанию

спасибо с этим я разобрался.
Скажите при создании форма как бы подлетает к нижнему краю экрана скажите можно это как то убрать и можно сделать отступы от левого и правого края
Ответить с цитированием
  #7  
Старый 26.04.2014, 14:19
Gudzik11 Gudzik11 вне форума
Начинающий
 
Регистрация: 27.09.2011
Сообщения: 158
Репутация: 10
По умолчанию

Подскажите почему пропадает звук у приложения если использовать этот модуль вот код

Код:
unit HomeUnit1;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.ExtCtrls, AppBar, Vcl.Menus, OptionsUnit2, System.Contnrs,
  Vcl.ComCtrls,
   Winapi.MMSystem, bass_simple ;

type
  TForm1 = class(TAppBar)
    Panel1: TPanel;
    Panel2: TPanel;
    PopupMenu1: TPopupMenu;
    mniOptions: TMenuItem;
    Timer1: TTimer;
    Timer2: TTimer;
    procedure FormCreate(Sender: TObject);
    procedure mniOptionsClick(Sender: TObject);
    procedure Panel1Resize(Sender: TObject);
    procedure PClick(Sender: TObject);
    function IndexInParent(vControl: TControl): integer;
    procedure Timer1Timer(Sender: TObject);
    procedure Timer2Timer(Sender: TObject);
  private
    { Private declarations }
     procedure openPanel;

  public
    { Public declarations }
    b: TbassSimple;
  end;

var
  Form1: TForm1;
  numberPages: Byte ; // номер панели
  selekt_panel: Integer ; // нажатие на панель
  focusPanel: Integer ;   // панель в фокусе
  MinForma,MaxForma : Integer ; // минемальный/максимальный размер панели

  paus: Integer ; // Пауза для закрытия
implementation

{$R *.dfm}

 procedure TForm1.openPanel;
 var
   spid : Integer ;
 begin
  if Form1.Height<=MinForma then
  begin
    //PlaySound('sound\hew\System Notifi.wav', 0, SND_ASYNC);
     b.Play('sound\GTAtitles.mp3');
    for spid := 0 to MaxForma do
   begin
    Form1.Top:=Form1.Top-1;
    Form1.Height:=Form1.Height+1;
   end;
  end;

  Form1.Panel1Resize(nil);
 end;

  // закрыть панель
 procedure closePanel;
 var
   spid : Integer ;
 begin
  if Form1.Height>=MaxForma then
  begin
  // PlaySound('sound\steam.wav', 0, SND_ASYNC);
   for spid := 0 to MaxForma do
   begin
    Form1.Top:=Form1.Top+1;
    Form1.Height:=Form1.Height-1;
   end;
  end;
 end;

{ функция, возвращающая индекс искомого компонента в
списке родителя; возвращает -1 при отсутствии компонента }
function TForm1.IndexInParent(vControl: TControl): integer;
var

ParentControl: TWinControl;
begin

 {делаем "слепок" родителя через базовой класс на предмет доступности }
 ParentControl := TForm(vControl.Parent);
 if (ParentControl <> nil) then
  begin
   for Result := 0 to ParentControl.ControlCount - 1 do
    begin
     if (ParentControl.Controls[Result] = vControl) then Exit;
    end;
  end;
 { если мы уж попали в это место, то либо не найден компонент, либо компонент не имел родителя }
 Result := -1;
end;

procedure TForm1.PClick(Sender: TObject);
var
 i,j: Integer;
begin
 focusPanel:=IndexInParent((sender as TPanel));
 for i:=0 to list.Count-1  do
 begin
  if ( TPanel(list[i]) is TPanel) then  // and (Panel4.Controls[i] <> Sender) and (Pos('Pages',TPanel(Panel4.Controls[i]).Caption) = 1)
  begin
   TPanel(list[i]).Color:=clSilver;
   (sender as TPanel).Color:= clLime;
   if i=focusPanel then
   begin
    TPanel(ListPage[i]).Visible:=True;
   end
   else
   begin
    TPanel(ListPage[i]).Visible:=False;
   end;

  end;

 end;
 openPanel;
  Timer1.Enabled:=True;
  Panel1Resize(nil);
end;


procedure TForm1.Timer1Timer(Sender: TObject);
begin
 // закрыть панель
 if (Mouse.CursorPos.y<Form1.top) or (Mouse.CursorPos.y>Form1.top+Form1.Height) or (Mouse.CursorPos.x<Form1.Left) or (Mouse.CursorPos.x>Form1.Left + Form1.Width)  then
    begin
     Timer2.Enabled:=True;


      end
      else
      begin
       Timer2.Enabled:=False;
       paus:=0;
      end;
end;

procedure TForm1.Timer2Timer(Sender: TObject);
begin
 paus:=paus+1;
 if paus=50 then
 begin
  closePanel;
  paus:=0;
  Timer2.Enabled:=False;
  Timer1.Enabled:=False;
 end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
 MinForma:=30;
 MaxForma:=100;
 selekt_panel:=-1;
 indexsLst:=-1;
 focusPanel:=0;

 b:=TBassSimple.Create(Handle);

 Form1.Edge:= abeBottom;
 Form1.Left:=10;
 Panel1.Height:=30;
 Form1.Height:=MinForma;
 Form1.Top:=Screen.WorkAreaHeight - Form1.Height;
 Form1.Width:=Screen.WorkAreaWidth-20;

 paus:=1; // Пауза для закрытия

// waveOutSetVolume(0,100000); // громкость панельки
 end;



procedure TForm1.mniOptionsClick(Sender: TObject);
begin
 Form2.Show;
end;

procedure TForm1.Panel1Resize(Sender: TObject);
const
 Pad = 2;
var
 i,j: Integer;
begin
 Form2.ListBox1.Clear;

 if List.Count>0 then
 begin
  For i := 0 to list.Count-1 do
  begin
   TPanel(list[i]).Left:=(Panel1.Width - Pad) * i div List.Count + Pad;
   TPanel(list[i]).Top:=Pad;
   TPanel(list[i]).Height:= Panel1.Height - Pad * 2;
   TPanel(list[i]).Width:= (Panel1.Width - Pad) * (i + 1) div List.Count - TPanel(list[i]).Left;
  end;
 end;

 for j := 0 to list.Count-1 do
 begin
  Form2.ListBox1.Items.Add(TPanel(list[j]).Caption)

 end;


 Form2.ListBox1.ItemIndex:=selekt_panel;


end;

end.
Ответить с цитированием
  #8  
Старый 26.04.2014, 14:19
Gudzik11 Gudzik11 вне форума
Начинающий
 
Регистрация: 27.09.2011
Сообщения: 158
Репутация: 10
По умолчанию

Это глюк AppBar.pas
Ответить с цитированием
  #9  
Старый 26.04.2014, 18:58
Аватар для cotseec
cotseec cotseec вне форума
Активный
 
Регистрация: 16.07.2008
Сообщения: 353
Версия Delphi: D7,TDE06,RAD09
Репутация: 1443
По умолчанию

в приведенном модуле присутствует такая штука, как bass_simple, используемая для воспроизведения звука (например в строке 54), копать стоит там
__________________
Понять, что хочет заказчик - бесценно, ведь он платит MasterCard
Ответить с цитированием
  #10  
Старый 26.04.2014, 19:20
Gudzik11 Gudzik11 вне форума
Начинающий
 
Регистрация: 27.09.2011
Сообщения: 158
Репутация: 10
По умолчанию

я пробовал и
Код:
PlaySound('sound\hew\System Notifi.wav', 0, SND_ASYNC);

результат тот же звук еле еле слышен если колонки на всю тут я думаю что в модуле AppBar.pas дело или я не правильно его использую так как при компиляции делфи тоже себя видёт странно .

Если не трудно может глянете .
http://gfile.ru/a5Klw

Последний раз редактировалось Gudzik11, 26.04.2014 в 19:27.
Ответить с цитированием
  #11  
Старый 26.04.2014, 19:39
Gudzik11 Gudzik11 вне форума
Начинающий
 
Регистрация: 27.09.2011
Сообщения: 158
Репутация: 10
По умолчанию

да ето я не правильно использую AppBar.pas

Я делал так создал новый проект потом добавил в uses
AppBar
Потом строку
Код:
TForm1 = class(TForm)

заменил
Код:
TForm1 = class(TAppBar)
Думаю тут нужно было по другому как то делать потому что пример работает отлично и Delphi не глючит и звук работает отлично !

Подскажите как правильно нужно делать?
Ответить с цитированием
  #12  
Старый 26.04.2014, 20:28
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

создал простейшее приложение с SHAppBarMessage и PlaySound (MMSystem, ShellAPI). все отлично воспроизводится.
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
Этот пользователь сказал Спасибо NumLock за это полезное сообщение:
Gudzik11 (29.04.2014)
  #13  
Старый 29.04.2014, 20:55
Gudzik11 Gudzik11 вне форума
Начинающий
 
Регистрация: 27.09.2011
Сообщения: 158
Репутация: 10
По умолчанию

Спасибо тоже сейчас всё стало нормально!
Скажите а как при закрытии формы вернуть рабочий стол на место .
Ответить с цитированием
  #14  
Старый 29.04.2014, 21:47
Gudzik11 Gudzik11 вне форума
Начинающий
 
Регистрация: 27.09.2011
Сообщения: 158
Репутация: 10
По умолчанию

Всё понял спасибо
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 19:17.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter