2016-07-26 7 views
0

私はDelphi 2010とReportBuilder 10.04を使用しており、2つのTppDBTextコンポーネントを含む1つの詳細バンドを持つ非常に基本的なレポートを持っています(1つはボールドテキストともう1つは太字です)。両方とも、期待どおりに設計時に定義された指定された位置でレポートに印刷しています。私ができることが必要なのは、他のコントロールのテキストの末尾に可能な限り近い位置にコントロールを再配置することです(テキストの長さが変化します)。どのようにこれを達成するための任意のアイデア?レポートビルダーランタイム時の位置決めコントロール

+0

あなたは 'AfterPrint'を設定しようとしています左側のコンポーネントのイベント?多分、その幅はそれに応じて設定されます。そうすれば、右にコンポーネントを適切に配置することができます。 – rgoliveira

+0

はい、私はそれを試みましたが、これは動作しませんでした。すべての幅は、最初のコントロールで同じに設定されていました。 – PDM

+0

ええ、それは私が思ったことです。私はこれを数回試しましたが、それは正しいことはありませんでした。垂直方向の位置決めには 'ShiftRelativeTo'がありますが、水平方向の位置決めには似ていません。たぶんリッチテキストコントロールを使用し、テキストを設定した後でフォーマットしますか? – rgoliveira

答えて

0

最初に、この例を実行するには、TppReportの 'Units'プロパティを 'utScreenUnits'に設定します。

ここでは都市と州のフィールドを使用し、データセットは「tblCustomers」とします。 DetailBandのBeforePrintプロパティで

は、次のコードを追加します。

// ppCity is a tppDBText report control 
// ppState is a tppDBText report control 

ppCity.Width := length(tblCustomersCity.asstring) * 10; //adjust 10 based on font size 
ppState.left := ppCity.Left + ppCity.Width + 10; // adjust 10 based on font size 

あなたはまた、計算フィールドでこれを行うことができますが、しかし、あなたの最初のコントロールが大胆であり、あなたの第二の制御を太字ではないので、上記の十分なはずです。

計算フィールドを使用するには、単に「シティステイト」と呼ばれる1つの計算フィールドに市と州を組み合わせて、データセットのOnCalcsで次の操作を行います。

tblCustomerCityState.asstring := tblCustomersCity.asstring +' '+tblCustomersState.asstring; 
+0

これは概算であることに注意してください。十分に大きな乗数を使用してください(この例では10 *です)。これは、モノスペースフォントと組み合わせることをお勧めします。 – rgoliveira