Форум: "Начинающим";
Текущий архив: 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