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

Вниз

Вопрос о MDI окнах   Найти похожие ветки 

 
dimonf   (2001-12-24 13:28) [11]

Это MainForm:
-------------------------------------------------------------------
...
private
procedure CreateMDIChild(const Name: string; Idx:Integer);
...
procedure TMainForm.CreateMDIChild(const Name: string; Idx:Integer);
var
Child: TMDIChild;
begin
Child:=TMDIChild.CreateMDI(Self, Idx);
// Child.Caption := Name;
// Child.Show;
// Child := TMDIChild.Create(Application);
// Child.Caption := Name;
end;

Вызываю :
CreateMDIChild("Текущие значения",1);

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

Это Childwin:

-------------------------------------------------------------------
type
TMyPozice = (pzLeft, pzRight, pzCenter);
TMyRect = record
Left, Top, Right, Bottom: Integer;
end;

type
TMDIChild=Class;

TPreview = class(TPanel)
private
property Canvas;
protected
MyMDI:TMDIChild;
procedure Paint; override;
procedure Draw(Value:Integer);
public
constructor Create(AOwner:TComponent); override;
function ConvData(Str: String; Index: Integer): String;
end;

TMDIChild = class(TForm)
fsChild: TfsManager;
TabSet1: TTabSet;
ScrollBox1: TScrollBox;
Panel1: TPanel;
constructor CreateMDI(Sender: TObject; AIdx:integer);
procedure FormCreate(Sender: TObject);
procedure FormResize(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormDestroy(Sender: TObject);
private
protected
Idx:integer;
public
MyPrev : TPreview;
end;
...
procedure TMDIChild.FormClose(Sender: TObject; var Action: TCloseAction);
Var iChild:integer;
MainForm:TForm;
begin
MainForm:=TForm(TForm(Sender).Owner);
for iChild:=0 to MainForm.MDIChildCount-1
do MainForm.MDIChildren[iChild].WindowState:=wsNormal;
// MyPrev.Free;
Action := caFree;
end;

procedure TMDIChild.FormCreate(Sender: TObject);
begin
SetWindowLong(ClientHandle, GWL_EXSTYLE,
GetWindowLong(ClientHandle,
GWL_EXSTYLE) or WS_EX_CLIENTEDGE);
SetWindowPos(ClientHandle, 0, 0, 0, 0, 0,
swp_DrawFrame or swp_NoMove or swp_NoSize
or swp_NoZOrder);
end;

constructor TPreview.Create(AOwner: TComponent);
begin
Inherited Create(AOwner);
MyMDI:=TMDIChild.Create(AOwner);
// Parent := AOwner as TWinControl; // Почемуто ругаеться в этом месте :((
BevelInner := bvNone;
BevelOuter := bvNone;
Color := clWhite;
BorderStyle := bsNone;
end;

procedure TPreview.Paint;
begin
Draw(MyMDI.Idx);
end;

procedure TPreview.Draw(Value : Integer);
var MyRect : TMyRect;
Count : Integer;

procedure MyStyle;
begin
with Canvas do begin
Pen.Width := 1;
Brush.Style := bsSolid;
Font.Color := clBlack;
Font.Size := 10;
Font.Style := [fsBold];
end;
end;

procedure Table(Rects : TMyRect; Top, Field : Integer);
var Count : Integer;
begin
For Count:=1 to Field do
begin
Canvas.Rectangle(Rects.Left-2, Rects.Top-2, Rects.Right+2, Rects.Bottom+2);
Rects.Top:=Rects.Top+Top;
Rects.Bottom:=Rects.Bottom+Top;
end;
end;

procedure Print(Rects : TMyRect; Pozice : TMyPozice; Value: String);
begin
case Pozice of
pzCenter : Canvas.TextOut(Ceil((Rects.Right-Canvas.TextWidth(Value))/2+18),Rects.Top+5,Value);
pzLeft : Canvas.TextOut(Rects.Left+5,Rects.Top+5,Value);
end;
end;
begin
case Value of
1 :
begin
Width:=460;
Height:=350;
MyStyle;
MyRect.Left:=40 ; MyRect.Top:=80; MyRect.Right:=247; MyRect.Bottom:=107;
Count:=7;
Table(MyRect,30,Count);
end;

MyRect.Left:=247; MyRect.Top:=80; MyRect.Right:=454; MyRect.Bottom:=107;
Count:=7;
Table(MyRect,30,Count);
end;
end;
2 :
begin
Width:=460;
Count:=MainForm.MyData.Count-3;
Height:=Count*25;
MyStyle;
MyRect.Left:=40 ; MyRect.Top:=1; MyRect.Right:=247; MyRect.Bottom:=107;
Table(MyRect,25,Count);
end;
end;
end;

procedure TMDIChild.FormResize(Sender: TObject);
begin
// MyPrev.Left:=Ceil((ScrollBox1.Width-MyWidth)/2-15);
end;

procedure TMDIChild.FormDestroy(Sender: TObject);
begin
MyPrev.Free;
end;

constructor TMDIChild.CreateMDI(Sender: TObject; AIdx: integer);
begin
// MyPrev:=TPreview.Create(Self);
// MyPrev.parent:=ScrollBox1;
MyPrev:=TPreview.Create(self); // Работает только Self. Если пишу
With MyPrev Do begin // Sender то ругаеться
left:=0; Top:=0;
Height:=500; Width:=500;
Parent:=ScrollBox1;
End;
Idx:=AIdx;
end;

end.

Точно я где-то напортачил :((( А понять где могу.



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

Форум: "Основная";
Текущий архив: 2002.01.14;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.005 c
1-42402
Phisio
2001-12-26 16:11
2002.01.14
Как нарисовать выбирающий прямоугольник у мышки как в стратежках


4-42624
VitaS
2001-11-14 21:51
2002.01.14
Передача управления windows


14-42572
Donal
2001-11-16 17:19
2002.01.14
а вот такой вопрос :-)


3-42395
SOFTMASTER
2001-12-09 19:54
2002.01.14
вопрос по запросу


14-42548
apav
2001-11-13 18:31
2002.01.14
ABC





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский