Einzelnen Beitrag anzeigen

Icemanemp

Registriert seit: 28. Mai 2004
Ort: immer dem Pfeil nach --->
26 Beiträge
 
Delphi 5 Enterprise
 
#18

Re: DisplayWidth (TField) in Milimeter umrechnen

  Alt 4. Okt 2004, 15:07
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...
  Mit Zitat antworten Zitat