2010-11-23 4 views
7

안녕하십니까. 저는 응용 프로그램을 작성 중이며, 다양한 양식과 해당 데이터 모듈이 있습니다. 사용 클래스 (구현시 하나는 상호 참조를 피하기 위해 인터페이스에 있음)를 언급하여 서로를 사용하는 방식으로 씁니다. 이 방법이 잘못 되었습니까? 왜 내가 어떻게 이런 식으로 사용해야합니까? 감사합니다Delphi DataModule 사용법 - 단일 또는 다중?

+0

질문의 성격을보다 명확하게 나타내려면 제목을 다시 써야합니다. 당신은 아마 그것을 편집 할 수 없으므로 나는 당신을 위해 그것을 할 것입니다 .... –

+3

IMO, 데이터 모듈은 결코 프로젝트의 폼을 참조하지 않아야합니다. 예를 들어 양식을 데이터 세트의 변경 사항에 대응해야한다면 해당 양식에 TDatasource를 넣고 데이터 세트에 링크하고 코드를 TDatasource의 이벤트에 넣으십시오. –

+1

올해 후반과 같은 질문으로 돌아가서 흥미로운 사실은 하나의 형식, 데이터 모듈 또는 단위로 어느 정도 밀어 낼 수 있는지에 대한 한계가 없다면 델파이 개발자들은 평균적으로 한 모듈에서 너무 많은 요소를 강요합니다/Unit/File은 실제로 의미가 있고 유지 보수가 가능하고 읽기 쉽다고 생각하는 대신에. –

답변

9

나는 Ldsandon, IMHO에 동의해야합니다. 프로젝트에서 하나 이상의 데이터 모듈을 갖는 것이 더 좋습니다. 모델 - 뷰 - 컨트롤러 (Model - View - Controller)로 보시면 DB가 모델이고 폼이 뷰일 것이고 데이터 모듈이 컨트롤러가 될 것입니다.

개인적으로 나는 항상 내 프로젝트에 최소한 2 개의 데이터 모듈을 가지고 있습니다. 하나의 datamodule은 프로젝트, 작업, ImageLists, DBConnection, 그리고 다른 것들을 공유하는 데 사용됩니다. 대부분 이것이 내 주요 데이터 모듈입니다.

거기에서 내 응용 프로그램의 각 '엔터티'에 대한 새 데이터 모듈을 만듭니다. 예를 들어 내 응용 프로그램이 주문, 커서 및 제품을 처리하거나 표시해야하는 경우 해당 제품의 모두에 대해 Datamodule을 갖게됩니다.

이 방법을 사용하면 기능을 명확하게 구분하고 모든 것을 가져올 필요없이 비트와 조각을 쉽게 재사용 할 수 있습니다. 고객과 관련이있는 것이 필요한 경우 Customers Datamodule을 사용하면됩니다.

감사합니다,

스테판

6

그것은 당신이 같은 형식의 하나 개 이상의 인스턴스 관련 데이터 모듈의 다른 인스턴스를 사용하여 각을 만들려고하고 특히, 괜찮습니다.

VCL 디자인에 약간의 문제가 있습니다. 동일한 양식의 두 인스턴스와 해당 데이터 모듈을 만드는 경우 두 형식 모두 동일한 데이터 모듈을 가리 킵니다 (VLC가 링크를 해결하기 때문에). 데이터 모듈 인스턴스를 만들 때 약간의 트릭 :

if FDataModule = nil then 
    begin 
    FDataModule := TMyDataModule.Create(Self); 
    FDataModule.Name := ''; // That will avoid pointing to the same datamodule 
    end; 
+0

+1은 DataModule 이름으로 트릭을 언급합니다. –

2

글래스 너머. 나는 항상 DataModule 대신에 Forms를 사용한다. 나는 그것이 공통점이 아니라는 것을 알고 있습니다, downvoting하기 전에 읽어주십시오.

나는 항상 DataModules 대신 Forms를 사용합니다. 나는 그들을 DataMovules라고 부른다.

필자는 논리적으로 관련된 각 테이블 그룹별로 하나의 DataMovule을 사용합니다.

DataModule 및 Forms이 모두 구성 요소 컨테이너이고 둘 다 데이터 관련 구성 요소의 컨테이너로 효과적으로 사용할 수 있기 때문에 양식을 DataModule 대신 사용합니다. 개발하는 동안

:

  • 내 응용 프로그램을 개발하는 것이 더 쉽습니다. 양식을 사용하면 데이터 구성 요소를 볼 기회가 주어 지므로 해당 구성 요소를 쉽게 개발할 수 있습니다.
  • 일부 뷰어 구성 요소를 즉시 넣을 수 있으므로 실제로 데이터를 볼 수 있으므로 응용 프로그램을 디버그하기가 더 쉽습니다. 일반적으로 테이블 당 하나의 페이지가있는 탭 랙을 만들고 테이블의 데이터를 탐색하기 위해 모든 페이지에 하나의 DataGrid를 만듭니다.
  • 스트레스 테스트를 위해 극한값을 실험하는 등 데이터를 조작 할 수 있으므로 응용 프로그램을 테스트하기가 더 쉽습니다.개발 후

: 나는 보이지 않는 형태를 설정 할

  • . 실제로 그것을 데이터 모듈로 만들면, 데이터 모듈보다 컨테이너 기능이 매우 좋습니다.

  • 하지만 보너스가 있습니다. 양식이 아직 있으므로 문제 결정을 위해 양식을 표시 할 수 있습니다. 나는 About Box를 사용한다.

아니요, 응용 프로그램의 크기 나 성능에 큰 어려움이 없었습니다.

MVC 패러다임을 깨뜨리지 않으려 고합니다. 나는 대신 그것에 충실하려고 노력한다. 내 View를 구성하는 Forms와 컨트롤러를 구성하는 DataMovule을 섞지 않습니다. 나는 그것들을 나의 관점의 일부라고 생각하지 않는다. 그들은 내 응용 프로그램의 사용자 인터페이스로 사용되지 않습니다. DataMovules는 단지 Forms 일뿐입니다. 그것들은 단지 편리한 공학 공예품 일뿐입니다.

+1

음, 여러 * 데이터 (m/v)의 odules을 선호합니다. ;) –

+8

양식은 데이터 모듈과 비교하여 "중량"입니다. 그것들은 실제로 OS "windows"이기 때문에 시스템 자원을 사용하고, winproc 등을 가지고 있습니다. Datamodule은 훨씬 더 가볍습니다. 보이지 않는 구성 요소 만있는 양식을 표시 할 필요가 거의 없습니다. 네, 당신은 그들에게 몇 가지 디버그 출력을 인쇄 할 수 있습니다. IMHO 더 나은 방법을 수행 할 수 있습니다. –

+0

예, 논리적으로 애플리케이션을 구성하고 재사용을 촉진하는 데 필요한만큼 사용합니다. –

2

데이터베이스 개체 테이블에 대해서만 데이터 모듈을 사용하면 첫 번째 테이블로 사용할 수 있습니다.

귀하의 행동을위한 데이터 모듈은 또 다른 것입니다.

이미지 목록 용 데이터 모듈 만이 또 다른 훌륭한 세 번째 데이터 모듈입니다. 이 데이터 모듈에는 이미지 목록 만 포함되어 있으므로 이미지 목록에 액세스해야하는 양식은이 공유 위치에서 모두 사용할 수 있습니다.

테이블 개체가 200 개 이상인 경우 db 테이블 용 데이터 모듈이 두 개 이상일 수 있습니다. 인보이스와 관련하여 20 개의 테이블이 있고 HR과 관련하여 20 개의 테이블이있는 애플리케이션을 상상해보십시오. 나는 InvoicingDataModule과 HRDataModule이 내부의 테이블과 그 테이블에 대해 작동하는 코드가 서로에 대해 알 필요가 없거나 한 모듈에 "uses"의존성이있는 경우에도 분리되어있어 좋을 것이라고 생각한다. 한 방향으로, 그러나 그 관계는 원형이 아니다. 그렇더라도보다 정교한 데이터 모듈 모듈화가 유용 할 수 있습니다.

관련 문제