{$mode objfpc} {$h+} unit frmnewnode; interface uses fpgtk,gtk,classes,sysutils; Type TNewNodeForm = Class (TFPGtkWindow) FTable : TFPGtkTable; FLENodeName : TFPGtkLabel; FENodeName : TFPGtkEntry; FSeparator : TFPGtkHSeparator; FVBox : TFPgtkVBox; FOK, FCancel : TFPGtkButton; FButtonBox: TFPgtkHBox; Constructor Create; Procedure CreateWindow; Procedure OnShow(Sender : TFpGtkObject;Data : Pointer); end; Implementation uses fpdemsg; Constructor TNewNodeForm.Create; begin Inherited Create(GTK_WINDOW_DIALOG); CreateWindow; end; Procedure TNewNodeForm.CreateWindow; Var OH,OV : TgtkAttachOPtions; begin FVBox:=TFPGtkVBox.Create; FVBox.Spacing:=4; FVBox.Border:=8; Add(FVBox); // Table area FTable:=TFPGtkTable.Create(1,1); FLENodeName:=TFPGtkLabel.Create(SName); FLENodeName.Justify:=GTK_JUSTIFY_RIGHT; FENodeName:=TFPgtkEntry.Create; FENodeName.GrabFocus; OH:=GTK_EXPAND or GTK_FILL; FTable.Attach(FLENodeName,0,1,0,1,0,GTK_FILL,4,4); FTable.Attach(FENodeName,1,2,0,1,OH,0,4,4); // button area FOK:=TFpGtkButton.CreateWithLabel(SOK); FOK.ConnectClicked(@CloseWithResult,IntToPointer(drOK)); FCancel:=TFPgtkButton.CreateWithLabel(SCancel); FCancel.ConnectCLicked(@CloseWithResult,IntToPointer(drCancel)); FSeparator:=TFPgtkHSeparator.Create; FButtonBox:=TfpGtkHBox.Create; FButtonBox.Spacing:=4; FButtonBox.PackEnd(FOK,false,false,4); FButtonBox.PackEnd(FCancel,false,false,4); // Add to window FVBox.PackStart(FTable,False,False,0); FVBox.PackStart(FSeparator,False,False,4); FVBox.PackStart(FButtonBox,false,false,0); // Some events; ConnectShow(@OnShow,Nil); end; Procedure TNewNodeForm.OnShow(Sender : TFpgtkObject; Data : Pointer); begin FocusedWidget(FENodeName); end; end.