level 6
巫山霏云
楼主
在FP中没有包含VCL(并不是不能用),所以写GUI的程序就需要调用大量的WINDOWS API,所以也就比较麻烦,下面是FP自带的例子,可以直接在FP1.9.8WIN版本下编译通过,我也改了中间一些菜单玩~{ $Id: edit.pp,v 1.3 2002/09/07 15:06:35 peter Exp $ Copyright (c) 1999 by Michael van Canneyt and Goran Andersson Win32 editor example.}{ Derived from menu.ppChanges by Goeran Andersson: 2000.02.24 Handles WM_DrawBkgnd to reduce flicker Changes to also compile in FPC modeChanges by Morten Skovrup: 2000-02-21 Change font Modified statusbarChanges by Goeran Andersson: 2000.02.20 Sends focus to editor 2000.02.19 Client edge added to editor Changes to also compile in FPC mode Handles Edit modify flag Undo menu item added Key codes added to edit menu Undo, Cut, Copy & Paste implemented WM_Paint sections commented 1999.08.10 LoadText() added NewText() added File selector added Asks to save file Empty files works EditCreate styles corrected}Program editdemo;{$APPTYPE GUI}Uses Strings,Windows;Const AppName = 'EditDemo';Type TFileName = Array[0..Max_Path] Of Char;Var AMessage : Msg; HWindow,HStatus,HEdit : HWnd; TheFont : HFont; TheLogFont : TLogFont; TheColor : DWORD; FileName : TFileName;{********************************************************************}Procedure SetStatusText(Num : Integer; Const Text : string);var StatText : array[0..255] of Char;begin if Num = 0 then StatText[0] := ' ' // Add space to text in first item else StatText[0] := #9; // Center the rest StrPCopy(@StatText[1],Text); SendMessage(HStatus,SB_SETTEXT,WPARAM(Num),LPARAM(@StatText));end;{********************************************************************}Function SelectFile(Var FName:TFileName; Open:Boolean): Boolean;Const Filter : PChar = 'Text files (*.txt)'#0'*.txt'
#0+ 'All files (*.*)'#
0'*.*'
#0#
0; Ext : PChar = 'txt';Var NameRec : OpenFileName;Begin FillChar(NameRec,SizeOf(NameRec),0); FName[0] := #0; With NameRec Do Begin LStructSize := SizeOf(NameRec); HWndOwner := HWindow; LpStrFilter := Filter; LpStrFile := @FName; NMaxFile := Max_Path; Flags := OFN_Explorer Or OFN_HideReadOnly; If Open Then Begin Flags := Flags Or OFN_FileMustExist; End; LpStrDefExt := Ext; End; If Open Then SelectFile := GetOpenFileName(@NameRec) Else SelectFile := GetSaveFileName(@NameRec);End;{********************************************************************}Procedure SaveText;Var Len : Longint; P : PChar; F : File; FName : TFileName;Begin If SelectFile(FName,False) Then Begin Assign(F,@FName); Rewrite(F,1); Len := GetWindowTextLength(HEdit); GetMem(P,Len+1);
2005年04月03日 11点04分
1
#0+ 'All files (*.*)'#
0'*.*'
#0#
0; Ext : PChar = 'txt';Var NameRec : OpenFileName;Begin FillChar(NameRec,SizeOf(NameRec),0); FName[0] := #0; With NameRec Do Begin LStructSize := SizeOf(NameRec); HWndOwner := HWindow; LpStrFilter := Filter; LpStrFile := @FName; NMaxFile := Max_Path; Flags := OFN_Explorer Or OFN_HideReadOnly; If Open Then Begin Flags := Flags Or OFN_FileMustExist; End; LpStrDefExt := Ext; End; If Open Then SelectFile := GetOpenFileName(@NameRec) Else SelectFile := GetSaveFileName(@NameRec);End;{********************************************************************}Procedure SaveText;Var Len : Longint; P : PChar; F : File; FName : TFileName;Begin If SelectFile(FName,False) Then Begin Assign(F,@FName); Rewrite(F,1); Len := GetWindowTextLength(HEdit); GetMem(P,Len+1);