Nur so zur Info!!! Es geht doch!
Delphi-Quellcode:
function TLLGenerischerDruck.GetDisplayWidthInMillimeter(FieldNo:Integer):Integer;
var OldMapMode:Integer;
TM: TEXTMETRIC;
begin
Result := FGrid.Fields[FieldNo].DisplayWidth; //Kein Millimeterangabe! Sondern Anzahl der Zeichen
OldMapMode := GetMapMode(FGrid.Canvas.Handle);
if SetMapMode(FGrid.Canvas.Handle, MM_LOMETRIC) <> 0 then
begin
if GetTextMetrics(FGrid.Canvas.Handle, TM) then
begin
result := Ceil(TM.tmAveCharWidth / 10 * FGrid.Fields[FieldNo].DisplayWidth); //Berechnung für Millimeter;
end;
end;
SetMapMode(FGrid.Canvas.Handle, OldMapMode);
end;
Durch die Änderunge des MapMode erhalte ich Millimeterangaben und durch die Ermittlung der durchschnittlichen Zeichen weite kann ich die tatsächliche Weite in Millimeter für List&Label bestimmen! Ihr habt mich schon voll krank gemacht! ich dachte schon mein Projekt wäre nicht so wie ich es will,aber hab es doch hinbekommen! Wenn man nun noch die gleiche Schriftart und Grösse im Grid, wie auch in List&Label benutzt, dann geht das... Habs mit den verschiedensten Grids ausprobiert und es funzt...