Форум: "Начинающим";
Текущий архив: 2013.03.22;
Скачать: [xml.tar.bz2];
ВнизРазмеры и положение окна в OpenDialog и т.п. Найти похожие ветки
← →
Jenyok (2012-04-09 10:29) [0]Delphi 7
Вот такой пример, взятый из архива форума.
.
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Buttons, StdCtrls, ExtCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
OpenDialog1: TOpenDialog;
procedure OpenDialog1Show(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
FDlgHandle : THandle;
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
function Mover(var H: THandle): LongInt; stdcall;
begin
repeat
if H <> 0 then
begin
MoveWindow(H, 1, 1, 500, 500, true);
ExitThread(0);
end;
sleep(1);
until false;
end;
procedure TForm1.OpenDialog1Show(Sender: TObject);
begin
FDlgHandle:=GetParent((Sender as TOpenDialog).Handle);
end;
procedure TForm1.Button1Click(Sender: TObject);
var
ID: LongInt;
begin
FDlgHandle:=0;
CreateThread(nil, 0, @Mover, @FDlgHandle, 0, ID);
OpenDialog1.Execute;
end;
end.
.
Выдает следующую ошибку при трансляции.
[Error] Unit1.pas(52): Types of actual and formal var parameters must be identical
.
Перечитал много раз Help по функции CreateThread, попробовал разные параметры поменять, ничего не помогает.
.
У кого какие соображения есть на этот счет ?
← →
begin...end © (2012-04-09 10:54) [1]> ID: LongInt
ID: Cardinal
В целом же код оставляет тягостное впечатление.
← →
Jenyok (2012-04-09 11:03) [2]begin...end ©
.
Спасибо за подсказку.
.
А Вы бы как сделали ?
Что в коде не так то или плохо ?
← →
Jenyok (2012-04-09 11:06) [3]begin...end ©
.
Что необходимо.
1. Изменить положение окна TOpenDialog и т.п.
2. Изменить размеры окна TOpenDialog и т.п.
← →
begin...end © (2012-04-09 11:55) [4]> Jenyok (09.04.12 11:03) [2]
> А Вы бы как сделали ?
Возможно, попробовал бы поменять оконную процедуру диалога. Пример:
http://forum.sources.ru/index.php?showtopic=341847
Только в Вашем случае флаг SWP_NOSIZE в SetWindowPos не нужен.
← →
Anatoly Podgoretsky © (2012-04-09 12:04) [5]SetWindowPos
← →
Jenyok (2012-04-09 12:34) [6]Спасибо большое...
← →
Jenyok (2012-04-09 19:10) [7]Вот еще пример...
.
unit Unit2;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
const
WMCDP = WM_User + 301;
type
TForm1 = class(TForm)
Button1: TButton;
OpenDialog1: TOpenDialog;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
procedure CDP(var Msg: TMessage); message WMCDP;
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
PostMessage(handle, WMCDP, 0, 0);
OPenDialog1.Execute;
end;
procedure TForm1.CDP(var Msg: TMessage);
var
r: TRect;
begin
GetWindowRect(GetParent(OpenDialog1.Handle), r);
SetWindowPos(GetParent(OpenDialog1.Handle), HWND_TOP,
Form1.Left + (Form1.Width - (r.Right - r.Left)) div 2,
Form1.Top + (Form1.Height - (r.Bottom - r.Top)) div 2, 0, 0,
SWP_NOZORDER + SWP_NOACTIVATE);
end;
end.
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2013.03.22;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.066 c