procedure TForm1.StringGrID1DrawCell(Sender: TObject; aCol,aRow: Integer; aRect: TRect; aState: TGrIDDrawState);var LStrCell: string; LRect: TRect; qrt:double;begin LStrCell := StringGrID1.Cells[ACol,ARow]; StringGrID1.Canvas.FillRect(aRect); LRect := aRect; DrawText(StringGrID1.Canvas.Handle,PChar(LStrCell),Length(LStrCell),LRect,TA_CENTER); //other codeend;
我正在使用Lazarus并且它给了我一个错误,因为它无法识别TA_CENTER.有解决方案吗
解决方法 由于您使用的是Lazarus,我不会依赖于特定于平台的windows API函数,而是使用内置的canvasTextRect
方法.在(未经测试的)代码中,它可能是: procedure TForm1.StringGrID1DrawCell(Sender: TObject; aCol,aRow: Integer; aRect: TRect; aState: TGrIDDrawState);var CellText: string; TextStyle: TTextStyle;begin CellText := StringGrID1.Cells[ACol,ARow]; StringGrID1.Canvas.FillRect(ARect); TextStyle := StringGrID1.Canvas.TextStyle; TextStyle.Alignment := taCenter; StringGrID1.Canvas.TextRect(ARect,CellText,TextStyle); ... end;
无论如何,您已经使用了一个TA_CENTER常量,它由不同的windows API函数使用,由SetTextAlign
函数使用.您应该使用DrawText
函数使用的DT_.
以上是内存溢出为你收集整理的delphi – TA_CENTER不适用于居中对齐StringGrid全部内容,希望文章能够帮你解决delphi – TA_CENTER不适用于居中对齐StringGrid所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)