表格視窗在放到最大時其包含的可視元件可依比例放大嗎? |
答題得分者是:懷舊的人
|
ry_lee
高階會員 發表:368 回覆:251 積分:123 註冊:2002-03-19 發送簡訊給我 |
|
cashxin2002
版主 發表:231 回覆:2555 積分:1937 註冊:2003-03-28 發送簡訊給我 |
|
ry_lee
高階會員 發表:368 回覆:251 積分:123 註冊:2002-03-19 發送簡訊給我 |
引言: 您好﹗ 將這些可視元件的Anchors屬性中的子屬性值皆設為True試試﹒ ================================= 有空來瞅瞅我﹗因為我是您的朋友﹐有您真好﹗ ================================我試了,但似乎不行,在本站有一範例程式(25826_ResizerForm.zip)可在表格視窗在放到最大時其包含的可視元件可依比例放大,惟其包含的可視元件TLabel似乎不能,不曉得為什麼其他元件可隨表格視窗縮放僅TLabel元件不能. |
pceyes
尊榮會員 發表:70 回覆:657 積分:1140 註冊:2003-03-13 發送簡訊給我 |
------
努力會更接近成功 |
lcjan
初階會員 發表:11 回覆:60 積分:29 註冊:2002-03-13 發送簡訊給我 |
|
hagar
版主 發表:143 回覆:4056 積分:4445 註冊:2002-04-14 發送簡訊給我 |
|
懷舊的人
高階會員 發表:28 回覆:152 積分:141 註冊:2003-01-08 發送簡訊給我 |
參考看看
unit FirstForm; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls,TypInfo,dxflchrt, ExtCtrls, ComCtrls; type TFormFirstForm = class(TForm) Timer0: TTimer; procedure FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); procedure FormCreate(Sender: TObject); procedure FormResize(Sender: TObject); private { Private declarations } OW,OH,OP: Longint; PropInfo: PPropInfo; OldCName,OldCSize: TStringList; public { Public declarations } end; var FormFirstForm: TFormFirstForm; implementation {$R *.dfm} procedure TFormFirstForm.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin // 禁止按 Alt F4 結束程式 if (ssAlt in Shift) and (Key = VK_F4) then Abort; end; procedure TFormFirstForm.FormCreate(Sender: TObject); var S: String; I,J: Integer; begin // 儲存 原 Form width , height , PixelsPerInch OW := TForm(Sender).Width; OH := TForm(Sender).Height; OP := TForm(Sender).PixelsPerInch; OldCName := TStringList.Create; OldCSize := TStringList.Create; for I := 0 to ComponentCount-1 do begin // Have Font PropInfo := GetPropInfo(Components[I], 'ImeName'); if PropInfo <> nil then TEdit(Components[I]).ImeName := ''; if not (Components[I] is TControl) then Continue; // Top,Left,Width,Height OldCName.Add(Components[I].Name); OldCSize.Add(Components[I].Name); OldCName.Add(Components[I].Name '.Top'); OldCSize.Add(IntToStr(TControl(Components[I]).Top)); OldCName.Add(Components[I].Name '.Left'); OldCSize.Add(IntToStr(TControl(Components[I]).Left)); OldCName.Add(Components[I].Name '.Width'); OldCSize.Add(IntToStr(TControl(Components[I]).Width)); OldCName.Add(Components[I].Name '.Height'); OldCSize.Add(IntToStr(TControl(Components[I]).Height)); // Have Font PropInfo := GetPropInfo(Components[I], 'Font'); if PropInfo <> nil then begin OldCName.Add(Components[I].Name 'Font.FontSize'); OldCSize.Add(IntToStr(TEdit(Components[I]).Font.Size)); OldCName.Add(Components[I].Name 'Font.FontHeight'); OldCSize.Add(IntToStr(TEdit(Components[I]).Font.Height)); end; // TStatusBar if Components[I] is TStatusBar then with TStatusBar(Components[I]) do for J := 0 to Panels.Count-1 do begin S := Name; S := S 'Panels.' FormatFloat('00',J) '.Width'; OldCName.Add(Name 'Panels.' FormatFloat('00',J) '.Width'); OldCSize.Add(IntToStr(Panels[J].Width)); OldCName.Add(Name 'Panels.' FormatFloat('00',J) '.Width'); OldCSize.Add(IntToStr(Panels[J].Width)); end; end; end; procedure TFormFirstForm.FormResize(Sender: TObject); var I,J: Integer; NW,NH,NP: Longint; T,L,W,H,FS,FH: Longint; begin if OldCName = Nil then Exit; NW := TForm(Sender).Width; NH := TForm(Sender).Height; NP := TForm(Sender).PixelsPerInch; for I := 0 to ComponentCount-1 do begin if not (Components[I] is TControl) then Continue; if OldCName.IndexOf(Components[I].Name) = -1 then Continue; T := OldCName.IndexOf(Components[I].Name '.Top'); T := StrToInt(OldCSize.Strings[T]); L := OldCName.IndexOf(Components[I].Name '.Left'); L := StrToInt(OldCSize.Strings[L]); W := OldCName.IndexOf(Components[I].Name '.Width'); W := StrToInt(OldCSize.Strings[W]); H := OldCName.IndexOf(Components[I].Name '.Height'); H := StrToInt(OldCSize.Strings[H]); TControl(Components[I]).Top := Longint((T * NH div OH) * NP div OP); TControl(Components[I]).Left := Longint((L * NW div OW) * NP div OP); TControl(Components[I]).Width := Longint((W * NW div OW) * NP div OP); TControl(Components[I]).Height := Longint((H * NH div OH) * NP div OP); // 檢查是否有 font property PropInfo := GetPropInfo(Components[I], 'Font'); if PropInfo <> nil then begin FS := OldCName.IndexOf(Components[I].Name 'Font.FontSize'); FH := OldCName.IndexOf(Components[I].Name '.FontHeight'); if FS <> -1 then begin FS := StrToInt(OldCSize.Strings[FS]); TEdit(Components[I]).Font.Size := Longint((FS * NP div OP) * NH div OH); end; end; if Components[I] is TStatusBar then with TStatusBar(Components[I]) do begin for J := 0 to Panels.Count-1 do begin W := OldCName.IndexOf(Name 'Panels.' FormatFloat('00',J) '.Width'); W := StrToInt(OldCSize.Strings[W]); Panels[J].Width := Longint((W * NW div OW) * NP div OP); end; end; end; end; end. |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |