Skip to main content
Known Participant
February 1, 2005
Question

列幅を設定する方法を教えて下さい。

  • February 1, 2005
  • 4 replies
  • 915 views
FDK を使って、Table の 列幅を一定に指定する 
プログラムを書きたいのですが、
それらしいプロパティを見つけられずにいます。

RealT r = F_ApiGetMetric( docId, cellId, FP_Width );

どなたか列幅を設定する方法を教えて下さい。
    This topic has been closed for replies.

    4 replies

    Participating Frequently
    February 1, 2005
    k-maru様。

    MetricTなどの単位系(?)については。
    FDK付属のマニュアル「FDK7.0 Programmer’s Reference」(fdkref.pdf)を見ると良いですよ。

    MetricTに関しては、P.675に解説があります。
    _koma_Author
    Known Participant
    February 1, 2005
    どうもありがとうございます。
    MetricT の値の単位がよくわかってないのですが、なんとか列幅を変更できました。

    F_MetricsT ms, ms2;
    ms = F_ApiGetMetrics( docId, tblId, FP_TblColWidths );
    ms2.len = ms.len;
    ms2.val = (MetricT*)F_Alloc( sizeof( MetricT ) * ms.len, DSE );

    for ( i = 0; i < ms.len; i++ ) {
    F_Printf( NULL, "%02d:%06x¥n", i,ms.val );
    aCell = this->getCell( 0, i );
    if ( aCell != NULL ) {
    m = aCell->rFontsize * aCell->iWidth * 0x10000;
    if ( m == 0 ) {
    ms2.val = ms.val;
    } else {
    ms2.val = m;}
    }
    }
    F_ApiDeallocateMetrics(&ms);
    F_ApiSetMetrics( docId, tblId, FP_TblColWidths, &ms2 );
    F_ApiDeallocateMetrics(&ms2);
    Participating Frequently
    February 1, 2005
    k-maru様。<br /><br />表の列幅設定部分は、下記のようなロジックになると思います。<br /><br />F_MetricsT colWid;<br />PRealT colWid1 = 30.0*FV_METRIC_MM;<br />UIntT ix;<br /><br />colWid = F_ApiGetMetrics(docId,tgroupId,FP_TblColWidths);<br />for(ix=0;ix<colWid.len;ix++){<br /> colWid.val[ix] = (MetricT)colWid1;<br />}<br />F_ApiSetMetrics(docId,tgroupId,FP_TblColWidths,&colWid); //横幅設定
    Participating Frequently
    February 1, 2005
    k-maru様。

    表の列幅は、FO_Tblオブジェクトが全列幅を持ってます。
    プロパティはFP_TblColWidthsで、F_MetricsT型ですよ。