Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Aussehen eines Labels überall gleich (https://www.delphipraxis.net/113434-aussehen-eines-labels-ueberall-gleich.html)

Ferox 7. Mai 2008 19:43


Aussehen eines Labels überall gleich
 
Liste der Anhänge anzeigen (Anzahl: 1)
Gudden Abend,

ich schreib seit ein paar Tagen ein Countdown, der sein Ergebnis in einem Label ausgibt. Das funktioniert auch recht gut.
Das Problem ist, dass das Label, je nachdem auf welchem PC ich das Programm installiere, anders aussieht.

Mal steht der Text rechtsbündig, mal ist er so groß das man nur einen Teil sieht, usw... :gruebel:

Weis jemand wie ich das ändern kann? :?:


Hab mal einen Screenshot als Beispiel angehängt.

himitsu 7. Mai 2008 19:52

Re: Aussehen eines Labels überall gleich
 
wenn du eine spezielle Schriftart verwendet, dann mußt du schon dafür sorgen, daß diese (der Font) auch installiert ist :zwinker:


dieses ist jedenfalls kein "Standard"-Font, welchen jeder hat


Achtung: paß aber auf, daß du den Font auch weitergeben darfst

DeddyH 7. Mai 2008 19:53

Re: Aussehen eines Labels überall gleich
 
Hast Du das Label vielleicht auf eine "exotische" Schriftart eingestellt, die auf den meisten PCs nicht installiert ist?

[edit] Mal wieder zu spät :? [/edit]

christian_r 7. Mai 2008 20:00

Re: Aussehen eines Labels überall gleich
 
Der Soll-Zustand ist doch kein System-Font? Steht der verwendete Font dem Projekt auch auf den anderen Rechnern zur Verfügung?

Wenn nicht:

Die von Dir designte Umgebung für Deinen Timer ist auf Deinen verwendeten Font und die verwendete Schriftgröße ausgerichtet. Die Komponente TLabel ist std.mäßig mit auf AutoSize = True definiert. Daraus ergibt sich Dein Problem.

Die Schrift, die auf einem anderen PC verwendet wird, ist in der Skalierung (das betrifft auch Diktengröße (Buchstabenbreite), Diktenabstand, etc.) nicht identisch mit Deiner SChriftart. Wird mehr Platz für die Schrift benötigt, wird das Label breiter und "läuft aus der Eltern-Komponente über". Dein Label ist nichts rechtsbündig, sondern linksbündig. Wäre es rechtsbündig, würde es nach links vergrößert werden und links überlaufen.

Und da ich zu langsam war: Die zwei über mir haben recht.

Ferox 7. Mai 2008 20:18

Re: Aussehen eines Labels überall gleich
 
Dann kann ich die "Font"-Datei doch auch bei der Installation mit installieren oder?
Wenn ja, dann kommt die doch nach zB "C:\WINDOWS\Fonts" oder?

P.S.: Danke für die schnellen Antworten

christian_r 7. Mai 2008 20:44

Re: Aussehen eines Labels überall gleich
 
Zitat:

Zitat von Ferox
Wenn ja, dann kommt die doch nach zB "C:\WINDOWS\Fonts" oder?

Ja. Allerdings kannst Du die Schriftart auch in Dein Projekt mit einbinden. Ich glauhe über die .res, also die Ressource des Projektes. Wie genau, kann ich Dir nicht erklären, habe es nie verwendet. Aber Antworten dazu solltest Du auch hier im Forum oder über Google finden. Ich glaube hier wurde es schon sehr oft besprochen.

Viel Erfolg!

Dunkel 7. Mai 2008 20:50

Re: Aussehen eines Labels überall gleich
 
Theoretisch kannst Du das natürlich machen. Alternativ kannst Du auch den Font als Ressource in die Echse einkompilieren und direkt aus dieser, ohne die Font-Datei auf der Festplatte zu speichern, benutzen.

Delphi-Quellcode:
var
  MyFont: TFont;

{ ... }

procedure LoadResFont;
 var
  Res : TResourceStream;
  ResFontCount: DWord;
 begin
  Res := TResourceStream.Create(hInstance, '_DEINFONT_', 'RT_FONT');
  try
    FontRes_Size := Res.Size + 1;
    FontRes_Buffer := AllocMem(FontRes_Size);
    Res.Read(FontRes_Buffer^, FontRes_Size);
  finally
    Res.Free;
  end;
  ResFontCount := 1;
  FontRes_Fraktur := AddFontMemResourceEx(FontRes_Buffer, FontRes_Size, nil, @ResFontCount);

  MyFont:= TFont.Create;
  MyFont.Name:= 'xirod';
  MyFont.Size:= 8;
  MyFont.Color:= clBlack;
end;

{ ... }

procedure TForm1.FormCreate(Sender: TObject);
begin
  LoadResFont;
  Label1.Font:= MyFont;
end;
Zum Erstellen einer Ressourcen-Datei und Einbinden in das Kompilat bitte die DP-Suche oder die Delphi-OH bemühen. Beispiele solltest Du genug finden.

himitsu 7. Mai 2008 20:59

Re: Aussehen eines Labels überall gleich
 
Zitat:

Wenn ja, dann kommt die doch nach zB "C:\WINDOWS\Fonts" oder?
theoretisch ja, aber eigentlich gibt es einige APIs dafür, welche den Font installieren (weiß nur grad nicht welche ... aber siehe MSDN-Library durchsuchenfont? )

Oder ... einige Installer bieten dafür Funktionen an

Man kann den Font aber auch ganz einfach im Programmverzeichnis (zur EXE) ablegen.


Und ich weiß ja nicht wo du den font her hast, aber wie schon erwähnt, hast du auch die Berechtigung den Font mit deinem Programm weiterzugeben?

Ferox 8. Mai 2008 06:22

Re: Aussehen eines Labels überall gleich
 
Danke für die Hilfe. Jetzt funktioniert alles so wie ich es möchte. Hab jetzt einfach das mit mit in den Installer gepackt. Muss nurnochmal gucken ob ich das Font weitergeben darf. :wink:

Danke
Ferox :thumb:


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:55 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