|
크레브 님이 쓰신 글 :
: 저도 대충 비슷한 방식으로 콤포넌트를 만들어 쓰고 있는데..
: 특정 콤포넌트에서 Caption이나 Text 읽어서 저장하고 있다가
: 실시간으로 콤포넌트에 설정 하는 방법입니다.
:
: 일단 TForm에서 Components[...] 를 이용해 콤포넌트 리스트를 스캔하면서
: 해당 이름의 콤포넌트에 셋팅해 주는 방식입니다.
: 이렇게 하면 언어별로 텍스트파일 만들어두고 로딩해주면 실시간 변경 가능합니다.
:
: 아래에 일부 제가 만들었던 콤포넌트에 IniFile에서 로딩하는 일부 소스 발췌 했으니 참고하세요.
: 오래전에 만든거라 허접합니다.
: 개선할 점이 많은데 귀찮아서 그냥 쓰고 있는중이거든요
:
:
:
: pForm = static_cast<XLangSub*>(List->Items[i])->ControlForm;
: if( pForm == NULL)
: continue;
: comCount = pForm->ComponentCount;
: for( int j=0; j<comCount; j++)
: {
: pCompo = pForm->Components[j];
: ClassName = pCompo->ClassName();
:
: // 속도를 높이기 위해 일단 클래스 이름부터 확인한다.
: if( ClassName == "TPanel")
: {
: Data = pIni->ReadString("XLang Caption List", pForm->Name + "->" + pCompo->Name, "");
: if( Data == "")
: continue;
: static_cast<TPanel*>(pCompo)->Caption = Data;
: }
: else if( ClassName == "TLabel")
: {
: Data = pIni->ReadString("XLang Caption List", pForm->Name + "->" + pCompo->Name, "");
: if( Data == "")
: continue;
: static_cast<TLabel*>(pCompo)->Caption = Data;
: }
: else if( ClassName == "TButton")
: {
: Data = pIni->ReadString("XLang Caption List", pForm->Name + "->" + pCompo->Name, "");
: if( Data == "")
: continue;
: static_cast<TButton*>(pCompo)->Caption = Data;
: }
: else if( ClassName == "TTabSheet")
: {
: Data = pIni->ReadString("XLang Caption List", pForm->Name + "->" + pCompo->Name, "");
: if( Data == "")
: continue;
: static_cast<TTabSheet*>(pCompo)->Caption = Data;
: }
:
:
:
: ASURADA 님이 쓰신 글 :
: : WinOrganizer 란 프로그램을 써보았는데...
: :
: : 이 프로그램의 언어 설정 부분을 보면 외부 텍스트 파일을 읽어들여 바로바로 UI 의 언어들을 바꾸어 버리더군요...
: :
: : 그래서 언어설정 파일을 보았더니 다음과 같더군요... 내용이 길어 일부만 발췌 하였습니다.
: :
: : [dmContacts]
: : Contacts.Caption=주소록
: : Contacts.Layouts.[0].Caption=메인
: : mnMainCharPanel.Caption=메인판넬
: : MsgAllFields.Text=모든 필드
: :
: : [dmPrintExport]
: : dlgCreateFile.Text=지정된 이름으로 파일을 만들수 없습니다.#13#10다른 파일이름을 입력하여 주십시요.
: : dlgCreateFolder.Text= "%s" 폴더를 만드시겠습니까 ?
: : dlgErrorCreateDir.Text= "%s" 디렉토리를 만들 수 없습니다.
: :
: : [frmBeforeExport]
: : btnCancel.Caption=취소
: : btnExport.Caption=다른 형식 내보내기
: : Caption=문서를 다른 형식으로 내보내기
: :
: : [frmChPicFormat]
: : btnCancel.Caption=취소
: : btnCustomize.Caption=사용자 설정
: :
: : [frmInspCustomize]
: : btnApply.Caption=적용
: : btnCancel.Caption=취소
: : btnMoveDown.Caption=아래로 이동
: :
: : 네이밍을 보아하니 델파이로 작성된 프로그램 같은데....
: : 델파이나 빌더에도 텍스트를 명령어로 수행할 수 있는 방법이 있나요?
: : 문자열에 따옴표가 없는걸로 봐서는 파싱하는 루틴을 작성한듯 한데......
: :
: : 뭐 다른 방법이 있을까요?
|