PDA

View Full Version : چطور میشه کپشن دکمه ها را از یه آرایه خواند؟



nasr
چهارشنبه 16 اسفند 1385, 10:28 صبح
سلام

من یه فرم دارم که 11 عدد دکمه روی اون گذاشتم و یه آرایه هم دارم که 11 متن داخل اون قرار دادم

var
TBcap : array [1..11]of string;

حالا می خوام که کپشن این دکمه ها به ترتیب همون عبارات داخل آرایه باشه.

Hamid_PaK
چهارشنبه 16 اسفند 1385, 18:21 عصر
این کد را هنگامی که با مشکل ذخیره کپشن ها و نمایش آنها در انواع سیستم عامل ها در دلفی 7.0 که یونیکد را پشتیبانی نمی کرد پیدا کردم نوشتم ...
توجه : استفاده غیر تجاری از این کد آزاد می باشد ، با تشکر.



type
TCaptionList = array[0..1] of String;

const
frm_ctrlnames: array[0..1] of TCaptionList = (
( 'bt_cancel', 'انصراف' ),
( 'lbl_state', 'نوار وضعیت ...' )
);

procedure SetChildCaptions(AComponent: TComponent; cap_list: array of TCaptionList);
var
i,
idx: Integer;

function GetItemIndex( cmpnt_name: String; cap_list: array of TCaptionList ): Integer;
begin
for Result := 0 to Length( cap_list ) -1 do
if CompareStr( LowerCase( cmpnt_name ), LowerCase( cap_list[ Result, 0 ] )) = 0 then Exit;
Result := -1;
end;

begin
//;
if AComponent.ComponentCount > 0 then
with AComponent do begin
for i := 0 to ComponentCount -1 do begin
if Components[ i ].ComponentCount > 0 then
SetChildCaptions( Components[ i ], cap_list );
if Length( Components[ i ].Name ) <= 0 then Continue;
idx := GetItemIndex( Components[ i ].Name, cap_list );
if idx >= 0 then
if Components[ i ].ClassType = TLabel then begin
TLabel( Components[ i ] ).Caption := cap_list[ idx, 1 ];
end else begin
SetWindowText( TWinControl( Components[ i ] ).Handle,
pChar( cap_list[ idx, 1 ] ));
end;
end;
end;
end;

//------------[usage]------------//
procedure Tfrm_main.FormCreate(Sender: TObject);
begin
//;
SetChildCaptions( Self, frm_ctrlnames );
end;


موفق باشید ، یا حق ...