Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2010.01.31;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.54 MB
Время: 0.005 c
15-1259443816
Юрий
2009-11-29 00:30
2010.01.31
С днем рождения ! 29 ноября 2009 воскресенье


2-1260255749
IIIakal
2009-12-08 10:02
2010.01.31
Два условия в инструкции if


15-1259047847
миржан
2009-11-24 10:30
2010.01.31
железа


1-1234891292
d@vinchi
2009-02-17 20:21
2010.01.31
Клиент-серверное приложе по протоколу SIP


3-1233829749
interandry
2009-02-05 13:29
2010.01.31
Помогите реализовать!!!





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский