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

Вниз

Задняя форма   Найти похожие ветки 

 
andrewtitoff ©   (2009-11-30 21:52) [0]

Как держать форму сзади окон моего приложения?
никак немогу разобраться
SetWindowPos(form1.Handle,HWND_BOTTOM,0, 0, 0, 0,SWP_NOSIZE);

так она сзади вообще всех приложений и если на нее нажать - то она все равно вперед выходит... =(((

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


 
Омлет ©   (2009-11-30 22:18) [1]

Зачем!?
Может проще вообще её не показывать?


> то она все равно вперед выходит...

При онфокус делай наперед другую.


 
andrewtitoff ©   (2009-11-30 22:53) [2]


> Омлет ©   (30.11.09 22:18) [1]
> Зачем!?Может проще вообще её не показывать?> то она все
> равно вперед выходит... При онфокус делай наперед другую.
>

Не, она нужна, а если их будет несколько?


 
andrewtitoff ©   (2009-11-30 23:08) [3]

protected
  procedure CreateParams(var Params: TCreateParams); override;

//...

procedure TForm1.CreateParams(var Params: TCreateParams);
begin
  inherited CreateParams(Params);
  if Assigned(Application.MainForm) then
  begin
    Params.WndParent := GetDesktopWindow;
    Params.Style := WS_CHILD;
  end;
end

так тоже не хочет работать... =(((


 
Омлет ©   (2009-11-30 23:28) [4]

Для фоновой формы в OnActivate:

 SetForegroundWindow(Application.MainForm.Handle);


 
antonn ©   (2009-12-01 00:11) [5]


> Зачем!?
> Может проще вообще её не показывать?

может тень делает :)


 
DVM ©   (2009-12-01 00:27) [6]


> andrewtitoff ©

Что ты такое изобретаешь?


 
Германн ©   (2009-12-01 01:50) [7]


> Что ты такое изобретаешь?
>

Велосипед, имхо.


 
Игорь Шевченко ©   (2009-12-01 01:51) [8]

" - Это твое заднее слово ?
 - заднЕе не бывает."
(с)


 
Andrewtitoff ©   (2009-12-01 10:38) [9]


> Омлет ©   (30.11.09 23:28) [4]
> Для фоновой формы в OnActivate:  SetForegroundWindow(Application.
> MainForm.Handle);

Чет грабли какието получаются в Create.... =(((


 
Сергей М. ©   (2009-12-01 11:47) [10]


> грабли какието получаются в Create


Под ноги надо смотреть.

Тебе говорят про OnActivate, а ты лезешь в какой-то Create)


 
andrewtitoff ©   (2009-12-01 19:24) [11]


> Сергей М. ©   (01.12.09 11:47) [10]
> > грабли какието получаются в CreateПод ноги надо смотреть.
> Тебе говорят про OnActivate, а ты лезешь в какой-то Create)

Да я туда и не лезу... =)))
Я в OnActivate и вставил, а в результате получил Access violation в Create, покрайне мере подчеркивает именно его...


 
Омлет ©   (2009-12-01 23:24) [12]

Код в студию.


 
Уэф   (2009-12-02 06:47) [13]

Прям "Кин-Дза-Дза" получается )))

: Это твоя задняя форма?
: Заднее не бывает!

)))


 
Andrewtitoff ©   (2009-12-02 13:43) [14]


> Омлет ©   (01.12.09 23:24) [12]
> Код в студию.


program Base;

uses
 Forms,
 Dialogs,
 MainUnit in "MainUnit.pas" {Form1},
 Dialog in "Dialog.pas" {Form2},
 Brigades in "Brigades.pas" {Form3},
 Start in "Start.pas" {StartForm},
 FirstHinstanceRunning_ in "FirstHinstanceRunning_.pas",
 gsCatcher in "gsCatcher.pas",
 About in "About.pas" {Form4};

{$R *.res}

begin
 GetDir(0,MD);
 Application.Initialize;

if FirstHinstanceRunning(1) then
  begin Showmessage("Программа уже запущена!"); Exit; end;

 Application.CreateForm(TForm1, Form1);
 Application.CreateForm(TForm2, Form2);

 StartForm := TStartForm.Create(Application);
 StartForm.Show;
 StartForm.Update;
 while StartForm.Gauge1.Progress<>1000 do
   Application.ProcessMessages;
 Application.Title := "Лифтовая база ООО"Радел"";
 StartForm.Hide;
 StartForm.Free;

 Application.CreateForm(TForm3, Form3);
 Application.CreateForm(TForm4, Form4);

 Application.Run;
end

----------------------------------------------

unit MainUnit;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, DB, ADODB, Grids, DBGrids, StdCtrls, ExtCtrls, DBCtrls, WordXP,
 OleServer, Word2000, Menus, ADOInt;

type

 TForm1 = class(TForm)
   ADOConnection4: TADOConnection;
   DBGrid5: TDBGrid;
   DataSource4: TDataSource;
   ADOTable4: TADOTable;
   MainMenu1: TMainMenu;
   N1: TMenuItem;
   N2: TMenuItem;
   N3: TMenuItem;
   N4: TMenuItem;
   N5: TMenuItem;
   N6: TMenuItem;
   N7: TMenuItem;
   N8: TMenuItem;
   N9: TMenuItem;
   PopupMenu1: TPopupMenu;
   N10: TMenuItem;
   N11: TMenuItem;
   ADOQuery1: TADOQuery;
   N12: TMenuItem;
   N13: TMenuItem;
   procedure N3Click(Sender: TObject);
   procedure N2Click(Sender: TObject);
   procedure N6Click(Sender: TObject);
   procedure N8Click(Sender: TObject);
   procedure N9Click(Sender: TObject);
   procedure N10Click(Sender: TObject);
   procedure N11Click(Sender: TObject);
   procedure ADOTable4AfterScroll(DataSet: TDataSet);
   procedure N12Click(Sender: TObject);
   procedure N13Click(Sender: TObject);
   procedure N5Click(Sender: TObject);
   procedure FormActivate(Sender: TObject);
 private
   { Private declarations }
 public
   { Public declarations }
 end;

var
 Form1: TForm1;
 FLog : textFile;
 Fcfg : textFile;
 MD : string;
 CS : string;
 base : string;
 function GetDataString(regN: string) : Tadotable;

 implementation

uses Dialog, Brigades, Start, About;

{$R *.dfm}

function GetDataString(regN: string) : Tadotable;
begin
Form1.DBGrid5.Visible:=false;
Form1.ADOTable4.First;
while not Form1.ADOTable4.Eof do
 begin
 if Form1.ADOTable4.Fields[0].Value=regN then
  begin
  Form1.DBGrid5.Visible:=true;
   result :=Form1.ADOTable4;
  exit;
  end;
 Form1.ADOTable4.Next;
 end;
Form1.DBGrid5.Visible:=true;
end;

procedure TForm1.ADOTable4AfterScroll(DataSet: TDataSet);
begin
if Form2 <> nil then Form2.StatusBar1.SimpleText:="Запись № "+inttostr(ADOTable4.RecNo)+" из "+inttostr(ADOTable4.RecordCount);
end;

procedure TForm1.FormActivate(Sender: TObject);
begin
SetForegroundWindow(Application.MainForm.Handle);
end;

procedure TForm1.N10Click(Sender: TObject);
begin
ADOTable4.Insert;
end;

procedure TForm1.N11Click(Sender: TObject);
begin
ADOTable4.Delete;
end;

procedure TForm1.N12Click(Sender: TObject);
var
  i : integer;
begin
Form1.ADOTable4.Filter:="";

for i := 0 to Form2.Panel3.ControlCount - 1 do
if Form2.Panel3.Controls[i] is TComboBox then
 with TComboBox(Form2.Panel3.Controls[i]) do
  clear;

 ADOQuery1.Close;
 ADOQuery1.CursorType := ctOpenForwardOnly;
 for i := 0 to Form2.Panel3.ControlCount - 1 do
begin
if Form2.Panel3.Controls[i] is TComboBox then
 with TComboBox(Form2.Panel3.Controls[i]) do
  begin
  ADOQuery1.SQL.Text:=Format("select distinct %s from lift",[ADOTable4.Fields[tag].FieldName]);
  ADOQuery1.Open;
  Application.ProcessMessages;
  while not ADOQuery1.Eof do
   begin
   Items.Add(ADOQuery1.Fields[0].AsString);
   ADOQuery1.Next;
   end;
  end;

  end;

 Form2.Caption:="Выборка";
 Form2.Panel3.BringToFront;
 Form2.Panel3.Left:=0;
 Form2.Panel3.Top :=0;
 Form2.ClientWidth :=Form2.Panel3.Width;
 Form2.ClientHeight:=Form2.Panel3.Height;  {}
 Form2.Position:=poScreenCenter;
 Form2.Show;

end;

procedure TForm1.N13Click(Sender: TObject);
begin
Form1.ADOTable4.Filter:="";
end;

procedure TForm1.N2Click(Sender: TObject);
begin
Form2.Caption:="Карточка лифта";
Form2.Panel1.Top :=400;
Form2.Panel2.Top :=450;
Form2.Panel3.Top :=500;
Form2.Width :=1024;
Form2.Height:=340;  {}
Form2.Position:=poScreenCenter;
Form2.Show;

Form2.StatusBar1.SimpleText:="Запись № "+inttostr(ADOTable4.RecNo)+" из "+inttostr(ADOTable4.RecordCount);

end;

procedure TForm1.N3Click(Sender: TObject);
begin
if Application.MessageBox("Вы действительно хотите выйти из базы?","Выход",MB_YESNO + MB_DEFBUTTON2 + MB_ICONEXCLAMATION) = 6 then
Application.Terminate;
end;

procedure TForm1.N5Click(Sender: TObject);
begin
Form4.Show;
end;

procedure TForm1.N6Click(Sender: TObject);
begin
Form3.Show;
end;

procedure TForm1.N8Click(Sender: TObject);
begin
Form1.ADOTable4.Filter:="";

 Form2.Caption:="Поиск по Рег. номеру";
 Form2.Panel1.BringToFront;
 Form2.Panel1.Left:=0;
 Form2.Panel1.Top :=0;
 Form2.ClientWidth :=Form2.Panel1.Width;
 Form2.ClientHeight:=Form2.Panel1.Height;
 Form2.Position:=poScreenCenter;
 Form2.Show;
end;

procedure TForm1.N9Click(Sender: TObject);
begin
Form1.ADOTable4.Filter:="";

 Form2.Caption:="Поиск по адресу";
 Form2.Panel2.BringToFront;
 Form2.Panel2.Left:=0;
 Form2.Panel2.Top :=0;
 Form2.ClientWidth :=Form2.Panel2.Width;
 Form2.ClientHeight:=Form2.Panel2.Height;
 Form2.Position:=poScreenCenter;
 Form2.Show;
end;

end.


 
Омлет ©   (2009-12-04 00:28) [15]

Я имел в виду код, где AV падает. Точки останова и дебаг..
При активации задней формы надо вызывать SetForegroundWindow для передней.
А вы, похоже, делаете SetForegroundWindow для этой же задней формы.


 
Германн ©   (2009-12-04 02:20) [16]


> Application.Title := "Лифтовая база ООО"Радел"";

Что-то, где-то, о лифтах и связанных с ними проблемами я помню. Было на сём форуме. :)


 
brother ©   (2009-12-04 05:33) [17]

> Что-то, где-то, о лифтах и связанных с ними проблемами я
> помню. Было на сём форуме. :)

ага, а погуглив:
http://www.lift.sp.ru/
туда не обращайтесь ;)


 
Дмитрий С ©   (2009-12-04 06:38) [18]

Кстати, И.Ш. знает. Несколько лет назад он мне отвечал на этот вопрос :)


 
Andrewtitoff ©   (2009-12-04 09:25) [19]


> Омлет ©   (04.12.09 00:28) [15]
> Я имел в виду код, где AV падает. Точки останова и дебаг.
> .При активации задней формы надо вызывать SetForegroundWindow
> для передней. А вы, похоже, делаете SetForegroundWindow
> для этой же задней формы.

Так я же говорил что точка останова
Application.CreateForm(TForm2, Form2);

Thread Start: Thread ID: 3844. Process Base.exe (3864)
Process Start: C:\Documents and Settings\Andrew\Рабочий стол\Programs\!!!!!ЛАС!!!!!\!!!_BASE_2009_\Base.exe. Base Address: $00400000. Process Base.exe (3864)
Module Load: Base.exe. Has Debug Info. Base Address: $00400000. Process Base.exe (3864)
Module Load: ntdll.dll. No Debug Info. Base Address: $7C900000. Process Base.exe (3864)
Module Load: KERNEL32.dll. No Debug Info. Base Address: $7C800000. Process Base.exe (3864)
Module Load: OLEAUT32.dll. No Debug Info. Base Address: $77110000. Process Base.exe (3864)
Module Load: ADVAPI32.dll. No Debug Info. Base Address: $77DC0000. Process Base.exe (3864)
Module Load: RPCRT4.dll. No Debug Info. Base Address: $77E70000. Process Base.exe (3864)
Module Load: Secur32.dll. No Debug Info. Base Address: $77FE0000. Process Base.exe (3864)
Module Load: GDI32.dll. No Debug Info. Base Address: $77F10000. Process Base.exe (3864)
Module Load: USER32.dll. No Debug Info. Base Address: $7E360000. Process Base.exe (3864)
Module Load: msvcrt.dll. No Debug Info. Base Address: $77C00000. Process Base.exe (3864)
Module Load: ole32.dll. No Debug Info. Base Address: $774D0000. Process Base.exe (3864)
Module Load: MSIMG32.dll. No Debug Info. Base Address: $76350000. Process Base.exe (3864)
Module Load: VERSION.dll. No Debug Info. Base Address: $77BF0000. Process Base.exe (3864)
Module Load: COMCTL32.dll. No Debug Info. Base Address: $5D5B0000. Process Base.exe (3864)
Module Load: SHELL32.dll. No Debug Info. Base Address: $7C9C0000. Process Base.exe (3864)
Module Load: SHLWAPI.dll. No Debug Info. Base Address: $77F60000. Process Base.exe (3864)
Module Load: WINSPOOL.DRV. No Debug Info. Base Address: $72FC0000. Process Base.exe (3864)
Module Load: IMM32.dll. No Debug Info. Base Address: $76360000. Process Base.exe (3864)
Module Load: COMCTL32.dll. No Debug Info. Base Address: $773C0000. Process Base.exe (3864)
Module Load: MSCTF.dll. No Debug Info. Base Address: $746E0000. Process Base.exe (3864)
Module Load: msctfime.ime. No Debug Info. Base Address: $75310000. Process Base.exe (3864)
Module Load: CLBCatQ.DLL. No Debug Info. Base Address: $76FC0000. Process Base.exe (3864)
Module Load: COMRes.dll. No Debug Info. Base Address: $77040000. Process Base.exe (3864)
Module Load: MSADO15.dll. No Debug Info. Base Address: $4DDD0000. Process Base.exe (3864)
Module Load: MSDART.DLL. No Debug Info. Base Address: $76580000. Process Base.exe (3864)
Module Load: comdlg32.dll. No Debug Info. Base Address: $76380000. Process Base.exe (3864)
Module Load: UNKNOWN_MODULE_2. No Debug Info. Base Address: $00FD0000. Process Base.exe (3864)
Thread Start: Thread ID: 4040. Process Base.exe (3864)
Thread Start: Thread ID: 3884. Process Base.exe (3864)
Module Load: OLEDB32.dll. No Debug Info. Base Address: $73F30000. Process Base.exe (3864)
Module Load: OLEDB32R.dll. No Debug Info. Base Address: $75130000. Process Base.exe (3864)
Module Load: UNKNOWN_MODULE_3. No Debug Info. Base Address: $1F430000. Process Base.exe (3864)
First chance exception at $7C812AFB. Exception class EOleException with message "Операция не допускается в данном контексте". Process Base.exe (3864)


 
Andrewtitoff ©   (2009-12-04 11:09) [20]


> Омлет ©   (04.12.09 00:28) [15]
> Я имел в виду код, где AV падает. Точки останова и дебаг.
> .При активации задней формы надо вызывать SetForegroundWindow
> для передней. А вы, похоже, делаете SetForegroundWindow
> для этой же задней формы.

Да, для этой же задней делал.. =(((
А как тогда?, это мне все формы что ли прописывать?,  у меня же их не 2 и отображаться обновременно могут ну как минимум 3...


 
Andrewtitoff ©   (2009-12-04 11:10) [21]


> Дмитрий С ©   (04.12.09 06:38) [18]
> Кстати, И.Ш. знает. Несколько лет назад он мне отвечал на
> этот вопрос :)

Так всегда, знает, но молчит... =))))


 
Омлет ©   (2009-12-04 18:22) [22]

Так проблема в вашем ADO, а не в SetForegroundWindow.
Откою секрет: кроме F9 и F8, при дебаге можно еще и F7 использовать.


 
Демо ©   (2009-12-04 20:22) [23]


> при дебаге можно еще и F7 использовать.


Ужас какой...


 
Andrewtitoff ©   (2009-12-07 09:28) [24]


> Омлет ©   (04.12.09 18:22) [22]
> Так проблема в вашем ADO, а не в SetForegroundWindow.

А что с моим ADO ?


 
Омлет ©   (2009-12-07 19:45) [25]

Я не телепат, но написано "Операция не допускается в данном контексте"


 
yyr3   (2009-12-08 06:36) [26]

Задней не получиться всех, тк тогда ее видно не будет совсем,
ну к примеру как это задней например рабочего стола винды? А вообще
бред какой то:)


 
Andrewtitoff ©   (2009-12-09 09:30) [27]

Удалено модератором



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

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

Наверх




Память: 0.55 MB
Время: 0.011 c
2-1260216994
istok20
2009-12-07 23:16
2010.01.31
Invalid pointer operation...


11-1210873275
Vinum
2008-05-15 21:41
2010.01.31
Как у стринггриду запретить редактировать определенные ячейки


2-1260352002
Жужузу
2009-12-09 12:46
2010.01.31
Запутался в объектах


2-1260272652
kate158
2009-12-08 14:44
2010.01.31
разделение строки на число и букву


2-1260337028
Леонид Артюхов
2009-12-09 08:37
2010.01.31
Как наложить одну картинку на другую?