C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[46810] Re:Re:답변 감사드립니다.
ASURADA [asurada] 864 읽음    2006-10-19 09:11
크레브 님이 쓰신 글 :
: 저도 대충 비슷한 방식으로 콤포넌트를 만들어 쓰고 있는데..
: 특정 콤포넌트에서 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=아래로 이동
: :
: : 네이밍을 보아하니 델파이로 작성된 프로그램 같은데....
: : 델파이나 빌더에도 텍스트를 명령어로 수행할 수 있는 방법이 있나요?
: : 문자열에 따옴표가 없는걸로 봐서는 파싱하는 루틴을 작성한듯 한데......
: :
: : 뭐 다른 방법이 있을까요?

+ -

관련 글 리스트
46801 [Q]다국어 프로그램의 언어 설정에서.... ASURADA 869 2006/10/17
46809     Re:[Q]다국어 프로그램의 언어 설정에서.... 크레브 1126 2006/10/19
46810         Re:Re:답변 감사드립니다. ASURADA 864 2006/10/19
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.