자유롭게 질의 및 응답을 할 수 있는 게시판입니다. 개발자 여러분의 답변이 큰 도움이 됩니다. 
  • 제품설치/등록 오류 문의: 설치/등록 Q&A 이용 (제품 구매 고객 한정)

reFind.exe를 이용하면 컴포넌트 종류와 컴포넌트 속성을 변경하는 작업을 자동화 할 수 있습니다.

  • reFind.exe: 마이그레이션 작업에서 수작업을 줄여주는 도구: http://tech.devgear.co.kr/delphi_news/410746

하지만, 아쉽게도 속성을 추가하거나, 2가지 속성을 뒤바꾸는 등의 작업은 제공하지 않습니다.

reFind.exe는 정규표현식을 이용해 폼파일(*.dfm, *.fmx)과 소스파일(*.pas)의 문자열을 찾아서 치환합니다.

위 내용을 그대로 텍스트 에디터에서 작업하는 팁을 공유합니다.

 

(이 글에서는 텍스트 에디터로 NotePad++를 기준으로 설명합니다. 다른 정규표현식 검색을 지원하는 텍스트 에디터를 이용가능합니다.

NotePad++ : 프리웨어 텍스트 에디터(기업 사용 가능), https://notepad-plus-plus.org/ )

 

(이 글은 델파이와 C++빌더 모두 해당됩니다. 폼파일의 구조는 델파이와 C++빌더가 동일합니다.)

정규표현식을 이용한 컴포넌트 속성 추가 원리

델파이 폼파일(*.dfm, *.fmx)을 텍스트 에디터로 열면 아래와 같습니다.(일부)

dfm_texteditor.png

 

폼파일에는 폼과 컴포넌트의 속성정보가 기록됩니다.(최상단 폼, 16라인 부터 컴포넌트 정보)

컴포넌트간의 계층관계는 object 태그안에 포함되는지 여부와 들여쓰기로 표현됩니다.

 

즉, 위의 텍스트 파일에서 필요한 컴포넌트를 찾아 속성문자열을 추가 후 RAD Studio IDE로 열면 속성이 추가됩니다.

속성 추가하기

오래된 버전의 델파이(Delphi5 ~ Delphi7 등)에서 TPanel과 TLabel의 배경색을 지정한 경우 최신버전의 델파이에서 배경색이 표현되지 않는 이슈가 있습니다.

해결 방법은 TPanel의 ParentBackgroud 속성을 False로, TLabel의 Transparent 속성을 False로 변경하면 됩니다.

 

위 해결방법은 간단하지만, 수많은 폼의 TPanel과 TLabel을 찾아다니며 속성을 수정하는 작업은 시간이 많이 소요되고,  실수할 수도 있습니다.

해당 내용을 텍스트 에디터의 정규표현식 검색/치환 기능을 이용해 한번에 처리하는 방법을 설명합니다.

 

작업전 주의사항

이 작업은 많은 파일을 일괄적용 하는 작업으로 잘못 작업 후 작업취소가 매우 어렵습니다.

반드시 파일을 백업 후 테스트 용 파일을 복사 후 해당 파일에서 작업 확인 후 전체적으로 적용하시기 바랍니다.

 

TPanel의 ParentBackgroud = False 속성 추가

1, Notepad++을 실행하고 폼파일 하나를 엽니다.

2, 찾기 > 바꾸기 메뉴를 선택합니다.

3, 아래와 같이 입력 합니다.

 - 찾을 내용 : ": TPanel\r\n"

 - 바꿀 내용 : ": TPanel\r\n    ParentBackground = False\r\n"

 - 검색 모드 : 확장(\n, \r, \t, \0, \x...)

nppp_replace.png

 - Notepad++의 줄바꿈 문자는 "\r\n"입니다. 다른 텍스트 에디터의 줄바꿈 문자는 다를 수 있으니 줄바꿈문자를 적절히 변경하시기 바랍니다.

4, 모두 바꾸기 버튼을 눌러 실행 후 결과를 확인합니다. RAD Studio IDE에서도 열어 속성이 변경되었는지 확인합니다.

바꾸기 전

replace_before.png

 

바꾸기 후

replace_after.png

 

여러 파일에 적용 시

1, 찾기 > 파일에서 찾기 메뉴를 선택합니다.

2, 필터와 디렉토리를 선택 후 [모두 바꾸기] 버튼을 이용해 실행합니다.

replace_files.png

 

TLabel의 Transparent = False 속성 추가

아래 검색어를 사용합니다.

 - 찾을 내용 : ": TLabel\r\n"

 - 바꿀 내용 : ": TLabel\r\n    Transparent = False\r\n"

 

두개의 속성 교체하기

XE3 버전에서 파이어몽키 앱으로 개발 시의 Padding과 Margines이 10 버전에서 뒤바뀌었다는 이슈를 받았습니다.

Padding과 Margins을 교체하는 작업은 아래와 같이 진행할 수 있습니다.

 

1, Padding을 PaddingTemp로 변경

2, Margines를 Padding으로 변경

3, PaddingTemp를 Margins로 변경

 

주의할 점은 다른 곳에서 Padding 또는 Margins 단어를 사용할 수 있으니 검색 시 앞에 공백과 뒤의 마침표를 포함해 검색 및 치환하시기 바랍니다.

 - 찾을 내용 : "  Padding."

 - 바꿀 내용 : "  PaddingTemp."

replace_fmx.png

 

몇가지 팁 및 주의사항

파일에서 바꾸기 전 모두 찾기로 확인 할 것

여러 파일을 대상으로 진행하는 경우 바꿀대상을 찾기로 검색 후 확인 후 바꾸기 작업을 하는 것이 좋습니다.

 

작업 전 백업, 테스트 파일에서 1차 진행 후 전체 진행할 것

여러 파일을 대상으로 작업 시 작업을 되돌리기 매우 어렵습니다.

반드시 파일을 백업후 진행합니다.

테스트 파일을 대상으로 검증 후 전체 진행하시기 바랍니다.

 

작업 진행 후 결과 확인 할 것

테스트 작업 또는 전체 작업 후 변경된 부분을 비교해 확인하고, RAD Studio IDE에서 열기 바랍니다.

텍스트 비교 툴을 이용하면 손쉽게 변경된 부분을 비교 확인할 수 있습니다.

winmerge.png

위 화면은 WinMerge(http://winmerge.org/, 프리웨어)를 이용해 변환 전 파일과 변환 후 파일을 비교한 화면입니다.

 

속성 문자열 중복 및 들여쓰기는 무시

위 작업 시 속성 문자열이 여러번 들어가거나 들여쓰기가 다르게 작업될 수 있습니다.

위 내용은 RAD Studio IDE에서 폼파일을 열고 저장 시 중복된 속성을 하나로 통합되며, 들여쓰기가 올바르게 지정되니 무시해도 됩니다.

 

 

 

 

번호 제목 글쓴이 날짜 조회 수
공지 [프로그래밍 강의] 2021.6~2021.12 관리자 2015.01.22 15765
공지 유용한 관련 사이트 관리자2 2014.03.20 54578
공지 본 게시판은 개발자 여러분들의 질문과 답변을 공유하는 공간입니다. 관리자 2012.01.10 97982
1573 엑셀 내보내기 버전지 [1] 그몽이 2019.06.12 232
1572 Datasnap(midas) 사용시 조회 자료를 ADOQuery 에 넣고 싶습니다. [1] 블랙 2019.06.13 172
1571 ClientDataSet 사용중입니다. 이미지 또는 파일을 테이블에 넣을시 에러입니다. 어떻게들 하시나요? [1] 블랙 2019.06.14 206
1570 델파이 시애틀 사용자입니다. MariaDB [2] 시리온느 2019.06.25 304
1569 XE5 겔럭시디바이스 연결 [2] file 넓다란세상 2019.06.24 147
1568 Data Explorer의 dbExpress 항목에 누락된 것이 있습니다. 루키 2019.06.24 112
1567 PluginMain.pas(14): E2225 Never-build package 'F8PluginCore' must be recompiled file ucucucu 2019.06.24 165
1566 제브라 프린터 한글 출력 문제 [2] max 2019.06.19 1528
1565 쇼핑몰 결제시스템관련 질문 유정 2019.06.24 193
1564 XE5 Firemonkey Mobile 넓다란세상 2019.06.22 65
1563 혹시 창 사이즈 고정하는 방법이 있을까요? 짱구 2019.06.21 238
1562 델파이 10.3.1에서 IOS 환경 설정 관련해서 질문 드려요. [3] 짱구 2019.06.15 214
1561 델파이5 Indy9 소켓 관련 문의 땡이 2019.06.19 153
1560 TIWRegion not found 문의 생각 2019.06.13 109
1559 stringgrid에 넣은 Image 클릭 이벤트 발생을 어떻게 해야 하나요? [1] 초보델팡이 2019.06.11 344
1558 오픈소스 scannerMapp 에서 아래와 같은 에러가 나옵니다. [1] 김종찬 2018.07.30 326
1557 메뉴나 에러메시지 한글 / 영문 선택 ... [2] 초보델팡이 2019.05.31 247
1556 android 64비트를 알아내는법? [2] 100jk 2019.06.09 194
1555 Form BorderStyle:=bsNone 일때 화면 깜박임 softkim 2019.06.09 356
1554 어떤 때 Form 추가가 안나타날 수 있죠? [3] file 거북선생 2019.06.02 266