|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
зафиксировать место для формы
Здравствуйте не знаю как правельно обяснить что мнке нужно ?
У меня форма находитса над понелью задачь и мне нужно чтоб другие программы при открытии на весь экран не перекрывала мою форму тоесть как на картинке. |
#2
|
||||
|
||||
Цитата:
Вот >здесь< уже готовый модуль AppBar.pas на Delphi (смотри в архиве демку в папке DemoApp) |
Этот пользователь сказал Спасибо poli-smen за это полезное сообщение: | ||
Gudzik11 (25.04.2014)
|
#3
|
|||
|
|||
Спасибо! То что нужно .
|
#4
|
|||
|
|||
Подскажите как пне сразу установить панель в нижний край экрана и запретить передвижение мышкой.
я просто ешё долго буду разбирать этот модуль |
#5
|
||||
|
||||
Цитата:
Код:
procedure TDemoBar.FormCreate(Sender: TObject); begin Edge := abeBottom; end; Код:
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
|
|||
|
|||
спасибо с этим я разобрался.
Скажите при создании форма как бы подлетает к нижнему краю экрана скажите можно это как то убрать и можно сделать отступы от левого и правого края |
#7
|
|||
|
|||
Подскажите почему пропадает звук у приложения если использовать этот модуль вот код
Код:
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
|
|||
|
|||
Это глюк AppBar.pas
|
#9
|
||||
|
||||
в приведенном модуле присутствует такая штука, как bass_simple, используемая для воспроизведения звука (например в строке 54), копать стоит там
Понять, что хочет заказчик - бесценно, ведь он платит MasterCard |
#10
|
|||
|
|||
я пробовал и
Код:
PlaySound('sound\hew\System Notifi.wav', 0, SND_ASYNC); результат тот же звук еле еле слышен если колонки на всю тут я думаю что в модуле AppBar.pas дело или я не правильно его использую так как при компиляции делфи тоже себя видёт странно . Если не трудно может глянете . http://gfile.ru/a5Klw Последний раз редактировалось Gudzik11, 26.04.2014 в 19:27. |
#11
|
|||
|
|||
да ето я не правильно использую AppBar.pas
Я делал так создал новый проект потом добавил в uses AppBar Потом строку Код:
TForm1 = class(TForm) заменил Код:
TForm1 = class(TAppBar) Подскажите как правильно нужно делать? |
#12
|
||||
|
||||
создал простейшее приложение с SHAppBarMessage и PlaySound (MMSystem, ShellAPI). все отлично воспроизводится.
Пишу программы за еду. __________________ |
Этот пользователь сказал Спасибо NumLock за это полезное сообщение: | ||
Gudzik11 (29.04.2014)
|
#13
|
|||
|
|||
Спасибо тоже сейчас всё стало нормально!
Скажите а как при закрытии формы вернуть рабочий стол на место . |
#14
|
|||
|
|||
Всё понял спасибо
|