Delphi POS餐飲系統開發支援多國語言作法

開發餐飲POS或是其他系統,如果想打入國際市場的話,都會考量多國語系的問題,大部份就是使用mapping的方式。

在Delphi裡面的做法也很簡單~

先取得form上面的元件數(ComponentCount)

接下來用一個迴圈去比對即可。

資料表也可以開成一個

表單名稱、元件名稱、語言1、語言2、語言3的欄位…

不過因為裡面使用了infopower的wwdbgrid元件,寫在formcreate或formshow都抓不到值,後來是放到FormActivate才順利抓到

以下提供簡單的範例

 

var
  sFormName:String;
  i:integer;
begin
  sFormName:= Self.Name;  // 表單名稱
  for i:=0 to self.ComponentCount -1 do begin
    if Components[i] is TLabel then begin
        if (TLabel(components[i]).Caption <>'') then begin
          TLabel(components[i]).Caption := 取得語系....;
        end;
    end; 
    if Components[i] is TButton then begin
        if (TButton (components[i]).Caption <>'') then begin
          TButton (components[i]).Caption := 取得語系....;
        end;
    end; 
  end;
end;

wwDBGrid的話關鍵有:
s:= TwwDBGrid(Components[i]).DataSource.DataSet.Fields[j].FieldName;
TwwDBGrid(Components[i]).ColumnByName(s).DisplayLabel
TwwDBGrid(Components[i]).ColumnByName(s).GroupName