AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi DisplayWidth (TField) in Milimeter umrechnen
Thema durchsuchen
Ansicht
Themen-Optionen

DisplayWidth (TField) in Milimeter umrechnen

Ein Thema von Icemanemp · begonnen am 1. Okt 2004 · letzter Beitrag vom 4. Okt 2004
Antwort Antwort
Seite 2 von 2     12   
Icemanemp

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

Re: DisplayWidth (TField) in Milimeter umrechnen

  Alt 1. Okt 2004, 15:04
Mir geht es doch gar nicht darum,das ich genau die gleich grösse haben will! ich hab nur die DisplayWidth und wenn ich das an List&Label übergebe, dann sind es Millimeter... ich könnte doch eigentlich von der durschnittlichen Breite eines Zeichen (in List&Label ist es Arial 10) die ich mit TTextMetric -> Objekt.tmAveCharWidth x DisplayWidth errechnen wie gross, die Spalte in List&Label sein soll.

Die Displayresolution kann ich doch einfach abfragen oder? und die pixel per inch bekomm ich doch auch raus, als kann man doch auhc alles in millimeter umrechen egal ob 22" oder 14" monitor! Mit geht es nciht darum, das ich es original getreu millimeter nachbilden möchte, sondern, das wenn ich Spalten auf meinem Grid vergrössere, das diese im richtigen verhältnis zunehmen, sodass L&L richtig druckt!

Wenn net ist auch net so schlimm, dann nehm ich ein Faktor mit dem ich arbeite um umzurechnen oder lass es so! Die Hauptfunktionalität besteht ja schon! und da das Projekt von der IHK genehmigt wurd und ich später ne Präsenatation darüberhalten muss, wird das nicht stören! Trotzdem danke
  Mit Zitat antworten Zitat
Benutzerbild von Aenogym
Aenogym

Registriert seit: 7. Mär 2004
Ort: Schwerin
1.089 Beiträge
 
Delphi 7 Enterprise
 
#12

Re: DisplayWidth (TField) in Milimeter umrechnen

  Alt 1. Okt 2004, 15:09
hi nochmal,

du musst aber die ausmaße des angezeigten bildes auf dem monitor wissen, da du sonst kein verhältnis hast. denn dein text könnte auf dem monitor beliebig vergrößert oder verkleinert werden, obwohl er unverändert ausgedruckt wird. denn für das auge verändert sich was, aber nciht für den computer.

also kann der benutzer so keine richtige vorstellung vom ergebnis bekommen.

verstehst du? du musst die ausmaße des bildes kennen, dass auf dem monitor angezeigt wird. und das geht nur mit lineal und je nachdem, wie genau diese ausmaße abgelesen und dem programm mitgeteilt werden, wird der ausdruck auch stimmen.

Aenogym
Steffen Rieke
Was nicht buzzt, wird buzzend gemacht!
http://blog.base-records.de
http://www.base-records.de
  Mit Zitat antworten Zitat
Icemanemp

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

Re: DisplayWidth (TField) in Milimeter umrechnen

  Alt 1. Okt 2004, 15:19
Stimmt... Also geht es net... dann lass ich das kleine Feature weg...
  Mit Zitat antworten Zitat
Benutzerbild von ibp
ibp

Registriert seit: 31. Mär 2004
Ort: Frankfurt am Main
1.511 Beiträge
 
Delphi 7 Architect
 
#14

Re: DisplayWidth (TField) in Milimeter umrechnen

  Alt 1. Okt 2004, 15:29
wieso? du kannst doch eine kallibrierung einbauen, in der der user ein bestimmtes rechteck abmisst und die daten eingibt.
  Mit Zitat antworten Zitat
Benutzerbild von Aenogym
Aenogym

Registriert seit: 7. Mär 2004
Ort: Schwerin
1.089 Beiträge
 
Delphi 7 Enterprise
 
#15

Re: DisplayWidth (TField) in Milimeter umrechnen

  Alt 1. Okt 2004, 15:31
Zitat von Icemanemp:
Stimmt... Also geht es net... dann lass ich das kleine Feature weg...
wie ibp schon sagte, es geht. der user muss nur sein bild oder einen teil davon messen und im programm angeben. dann kannst du es auch ausrechnen.

Aenogym
Steffen Rieke
Was nicht buzzt, wird buzzend gemacht!
http://blog.base-records.de
http://www.base-records.de
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#16

Re: DisplayWidth (TField) in Milimeter umrechnen

  Alt 1. Okt 2004, 18:33
Setzt den MapMode auf MM_LOMETRIC dann liefert dir die Funktion GetTextMetrics die Werte in 1/10 Millimeter. Es ist sowieso zu empfeheln auf den Drucker Canvas nur in besagten MapMode zu arbeiten. Rechnest du in Pixel, sieht das ganze auf einem Ghostscript Drucker wieder ganz anderes aus.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Icemanemp

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

Re: DisplayWidth (TField) in Milimeter umrechnen

  Alt 3. Okt 2004, 11:58
Sorry, aber das mit dem Quadrat wird nicht realisierbar sein, da das Projekt einer Erweiterung in unserem Warenwirtscahftssystem ist. Dem Kunden kann ich so was nicht zumuten! Bei einer so grossen Software sieht das bischen komisch aus, wenn man z.B. in den Basisdaten ein Kalibrierungsbereich hat

@Luckie
Geht das auch auf dem Desktop? Als, wenn ich mir von TFont, das Handle nehme und dann TTextMetric zurückbekomme? Ich kann nämlich nicht auf den Druckerzeichenfläche zugreifen, da wir List&Label von Combit als Reportsoftware einsetzen!
Für mein Projekt wird es ein bischen "vergewaltigt", da List&Label mehr dafür gedacht ist mit vorhanden Daten Listen zu designen! Mein Projekt ist aber dynamisch...

Ich hoffe ihr versteht was mein Projekt ist, damit ihr mir auch helfen könnt... wenn weiter Aufklärungsbedarf besteht erklär ich es nochmal ausführlich!
  Mit Zitat antworten Zitat
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
Antwort Antwort
Seite 2 von 2     12   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:48 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz