![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Задняя форма
andrewtitoff © (2009-11-30 21:52:00)Как держать форму сзади окон моего приложения?
никак немогу разобраться
SetWindowPos(form1.Handle,HWND_BOTTOM,0, 0, 0, 0,SWP_NOSIZE);
так она сзади вообще всех приложений и если на нее нажать - то она все равно вперед выходит... =(((
А мне нужно что бы приложение вцелом вело себя как обычное, а внутри приложения одна форма находилась все время сзади...
Andrewtitoff (2009-12-09 09:30:00) [1]Удалено модератором
yyr3 (2009-12-08 06:36:00) [2]Задней не получиться всех, тк тогда ее видно не будет совсем,
ну к примеру как это задней например рабочего стола винды? А вообще
бред какой то:)
Омлет (2009-12-07 19:45:00) [3]Я не телепат, но написано 'Операция не допускается в данном контексте'
Andrewtitoff (2009-12-07 09:28:00) [4]
> Омлет © (04.12.09 18:22) [22]
> Так проблема в вашем ADO, а не в SetForegroundWindow.
А что с моим ADO ?
Демо (2009-12-04 20:22:00) [5]
> при дебаге можно еще и F7 использовать.
Ужас какой...
Омлет (2009-12-04 18:22:00) [6]Так проблема в вашем ADO, а не в SetForegroundWindow.
Откою секрет: кроме F9 и F8, при дебаге можно еще и F7 использовать.
Andrewtitoff (2009-12-04 11:10:00) [7]
> Дмитрий С © (04.12.09 06:38) [18]
> Кстати, И.Ш. знает. Несколько лет назад он мне отвечал на
> этот вопрос :)
Так всегда, знает, но молчит... =))))
Andrewtitoff (2009-12-04 11:09:00) [8]
> Омлет © (04.12.09 00:28) [15]
> Я имел в виду код, где AV падает. Точки останова и дебаг.
> .При активации задней формы надо вызывать SetForegroundWindow
> для передней. А вы, похоже, делаете SetForegroundWindow
> для этой же задней формы.
Да, для этой же задней делал.. =(((
А как тогда?, это мне все формы что ли прописывать?, у меня же их не 2 и отображаться обновременно могут ну как минимум 3...
Andrewtitoff (2009-12-04 09:25:00) [9]
> Омлет © (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)
Дмитрий С (2009-12-04 06:38:00) [10]Кстати, И.Ш. знает. Несколько лет назад он мне отвечал на этот вопрос :)
brother (2009-12-04 05:33:00) [11]> Что-то, где-то, о лифтах и связанных с ними проблемами я
> помню. Было на сём форуме. :)
ага, а погуглив:
http://www.lift.sp.ru/
туда не обращайтесь ;)
Германн (2009-12-04 02:20:00) [12]
> Application.Title := 'Лифтовая база ООО"Радел"';
Что-то, где-то, о лифтах и связанных с ними проблемами я помню. Было на сём форуме. :)
Омлет (2009-12-04 00:28:00) [13]Я имел в виду код, где AV падает. Точки останова и дебаг..
При активации задней формы надо вызывать SetForegroundWindow для передней.
А вы, похоже, делаете SetForegroundWindow для этой же задней формы.
Andrewtitoff (2009-12-02 13:43:00) [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-02 06:47:00) [15]Прям "Кин-Дза-Дза" получается )))
: Это твоя задняя форма?
: Заднее не бывает!
)))
Омлет (2009-12-01 23:24:00) [16]Код в студию.
andrewtitoff (2009-12-01 19:24:00) [17]
> Сергей М. © (01.12.09 11:47) [10]
> > грабли какието получаются в CreateПод ноги надо смотреть.
> Тебе говорят про OnActivate, а ты лезешь в какой-то Create)
Да я туда и не лезу... =)))
Я в OnActivate и вставил, а в результате получил Access violation в Create, покрайне мере подчеркивает именно его...
Сергей М. (2009-12-01 11:47:00) [18]
> грабли какието получаются в Create
Под ноги надо смотреть.
Тебе говорят про OnActivate, а ты лезешь в какой-то Create)
Andrewtitoff (2009-12-01 10:38:00) [19]
> Омлет © (30.11.09 23:28) [4]
> Для фоновой формы в OnActivate: SetForegroundWindow(Application.
> MainForm.Handle);
Чет грабли какието получаются в Create.... =(((
Игорь Шевченко (2009-12-01 01:51:00) [20]" - Это твое заднее слово ?
- заднЕе не бывает."
(с)