![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | 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), копать стоит там
|
|
#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
|
|||
|
|||
|
Всё понял спасибо
|