Autor |
Beitrag |
juergen
      
Beiträge: 87
|
Verfasst: Di 06.01.04 10:07
Hallo,
ich möchte in einem Label oder Stringgrid griechische Buchstaben verwenden.
(z.B. Winkel "PHI" wo PHI als griechisch)
Kann mir jemand helfen ?
juergen
|
|
mad_progger
      
Beiträge: 49
WIN XP, Linux
D7 Pro
|
Verfasst: Di 06.01.04 10:22
Normalerweise müsstest du einfach die Schriftart ändern, in eine wo dieses Zeichen als Sonderzeichen enthalten ist. Oder aber ihr verwendet den ASCII-Code, aber da weiß ich nicht ob er funktioniert
|
|
juergen 
      
Beiträge: 87
|
Verfasst: Di 06.01.04 10:45
wie finde ich den ASCII Code für PHI oder ALPHA etc. heraus ?
|
|
Simon Joker
      
Beiträge: 236
Erhaltene Danke: 1
|
Verfasst: Di 06.01.04 12:25
Hi Jürgen
ganz einfach
Schreibmal sowas in den Editor:
a b c d e f g h i j k l m n o p q r s t u v w x y z
und formatiere das dann in Schriftart "Symbol".
Fertig!
|
|
tommie-lie
      
Beiträge: 4373
Ubuntu 7.10 "Gutsy Gibbon"
|
Verfasst: Di 06.01.04 12:33
juergen hat folgendes geschrieben: | wie finde ich den ASCII Code für PHI oder ALPHA etc. heraus ? |
Gar nicht, weil's die griechischen Symbole im ANSI/ASCI-Zeichensatz nicht enthalten sind.
Bei mir gibt es die Schriftart "Symbol", ich weiß aber nicht, ob die standardmäßig bei Windows dabei ist oder ob die WordPerfect oder vielleicht CorelDraw nachinstalliert hat. So eine Schriftart müsste es aber eigentlich auch frei verfügbar im Internet geben. Die kannst du über das Font-Property des Stringgrids auswählen. Dann erscheint zum Beispiel die Zeichenfolge "A B" als "Alpha Beta". Das Phi dürfte ein P sein, sprich wenn du "P" ins Stringgrid schreibst dürfte bei Symbol ein Phi stehen, aber da ich grad' nicht weiß, wie ein PHi aussieht, müsstest du das selbst überprüfen.
Edit: Den Geschwindigkeitsrekord breche ich wohl nicht, aber dafür war's ausführlicher 
_________________ Your computer is designed to become slower and more unreliable over time, so you have to upgrade. But if you'd like some false hope, I can tell you how to defragment your disk. - Dilbert
|
|
juergen 
      
Beiträge: 87
|
Verfasst: Di 06.01.04 15:41
Danke für die Antworten.
Aber wie kann ich zwei verschiedene Schriftarten in einem einzigen Label bzw. Stringgrid.Cell definieren
Ich möchte wie bereits erwähnt schreiben: Winkel PHI
( das würde bedeuten ich schreibe: Winkel j , wo j die Schriftart Symbol haben müßte )
|
|
Simon Joker
      
Beiträge: 236
Erhaltene Danke: 1
|
Verfasst: Di 06.01.04 16:06
@Tommie-lie
Geschwindigkeit ist nicht alles!
Symbol ist eine Windows-Standard-Schrift, kann aber natürlich auch gelöscht worden sein. Deshalb beispeziellen Schriften immer mitliefern und dynamisch ein binden.
So zum Beispiel:
Hinzufügen
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9:
| .... Error:=AddFontResource(pchar(FontFileName)); if Error<>0 then ShowMessage('Font nicht geladen'); SendMessage(HWND_BroadCast,WM_Fontchange,0,0); .... |
wieder löschen
Delphi-Quelltext 1: 2: 3: 4:
| ... RemoveFontResource(pchar(FontFileName)); SendMessage(HWND_BroadCast,WM_Fontchange,0,0); ... |
@jürgen
Zitat: | Aber wie kann ich zwei verschiedene Schriftarten in einem einzigen Label bzw. Stringgrid.Cell definieren
|
Gar nicht! Nimm 2 Labels.
|
|
juergen 
      
Beiträge: 87
|
Verfasst: Di 06.01.04 17:12
@Simon Joker,
und im Stringgrid ?
|
|
CenBells
      
Beiträge: 1547
Win 7
Delphi XE5 Pro
|
Verfasst: Di 06.01.04 19:06
Hallo,
im stringgrid wirst du verschiedene fonts verwenden können, allerdings nicht in einer zelle (vermutlich).
Schau dir mal das event OnDrawCell an.
Gruß
Ken
_________________ Eine Klasse beschreibt die Struktur und das Verhalten einer Menge gleichartiger Objekte.
|
|
fresewin
Hält's aus hier
Beiträge: 5
WIN XP
D5
|
Verfasst: Mo 12.12.05 08:55
Titel: Griechische Buchstaben in Stringgrids
hallo jürgen,
ich habe das gleiche Problem, und möchte griechische und lateinische Buchstaben innerhalb einer Celle mischen.
Hast du eine befriedigende Lösung gefunden?
Mit den Antworten, die du bekommen hast, werde ich noch nicht ganz schlau.....
|
|
iX0r
      
Beiträge: 34
Ubuntu
D6, Lazarus
|
Verfasst: Mo 12.12.05 09:35
Also, zwei verschiedene Schriftarten können nicht in der gleichen Zelle verwendet werden. Als Workaround aus der einen Zelle zwei machen, die den Eindruck erwecken, nur eine Zelle zu sein. In der einen kannst du dann rumarialen, in der anderen lustig symbolisieren.
iX0r
|
|
alzaimar
      
Beiträge: 2889
Erhaltene Danke: 13
W2000, XP
D6E, BDS2006A, DevExpress
|
Verfasst: Mo 12.12.05 09:39
Nehmt einfach ein TRichEdit. Das editieren ist zwar unmöglich, aber man kann immerhin eine RTF-Datei einlesen. Wenn man die vorher mit WordPad schreibt, kann man schon eine ganze Menge erledigen.
Um einen RTF-Text in ein TRichEdit einzulesen, verwendet man die LoadFromStream-Methode der Lines-Eigenschaft:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18:
| Procedure TForm1.SetMyRichEdit; const szRTF= 'rtf1\ansi\ansicpg1252\deff0\deflang1031{\fonttbl{\f0\fswiss\fcharset0 ' +'Arial;}{\f1\froman\fprq2\fcharset2 Symbol;}}' +'{\*\generator Msftedit 5.41.15.1507;}\viewkind4\uc1\pard\f0\fs20 Winkel \f1 ' +'F\f0\par}'; Var s : TStringStream;
Begin s := TStringStream.Create (szRTF); Try MyRichEdit.Lines.LoadFromStream (s); Finally s.Free; End; End; |
Wenn Du nun noch einen anständigen RTF-Editor als PropertyEditor für Dein Delphi findest, hast Du gewonnen.
Daneben gibt es noch diverse TLabel-Derivate, die deinen Geschmack treffen könnten, und zwar bei www.torry.net o.ä. Ich würde aber die RichEdit-Version vorziehen, weil Du Dich sonst von einer Drittkomponente abhängig machst, was bei einem Delphi-Wechsel u.U. zu Extraarbeit führen könnte...
Viele Wege führen nach Rom.
Und was die Darstellung in einem TStringGrid anbelangt, gibt es bei SwissDelphiCenter (glaube ich) ein Codeschnipsel, das einen RTF-formatierten Text in ein Bitmap rendert. Damit sollte die Darstellung im OnDraw des TStringGrids kein Problem sein...
_________________ Na denn, dann. Bis dann, denn.
|
|
Lannes
      
Beiträge: 2352
Erhaltene Danke: 4
Win XP, 95, 3.11, IE6
D3 Prof, D4 Standard, D2005 PE, TurboDelphi, Lazarus, D2010
|
Verfasst: Mo 12.12.05 10:10
Hallo,
iX0r hat folgendes geschrieben: | Also, zwei verschiedene Schriftarten können nicht in der gleichen Zelle verwendet werden.
... |
soviel Schriftarten wie Du willst, ist kein Problem
Der Folgende Code benutzt Wingdings und Arial in einer Zelle.
Hab ein Screenshot angehängt.
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31:
| procedure TForm1.FormCreate(Sender: TObject); begin with StringGrid1 do begin Cells[0,0] := 'Name'; Cells[1,0] := 'Telefon'; Cells[0,1] := 'Müller'; Cells[1,1] := '0251 / 00 00 00'; Cells[0,2] := 'Meier'; Cells[1,2] := '0900 / 00 00 00'; end; end;
procedure TForm1.GridDrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect; State: TGridDrawState); var x : Integer; begin with StringGrid1 do if not (gdFixed in State) then if ACol = 1 then begin Canvas.FillRect(Rect); Canvas.Font.Name := 'Wingdings'; Canvas.Font.Color := clred; Canvas.TextOut(Rect.Left+2,Rect.Top+2,'('); x := Canvas.TextHeight('('); Canvas.Font := Font; Canvas.Font.Color := clBlue; Canvas.TextOut(Rect.Left+2,Rect.Top+2+x,Cells[ACol,ARow]); end; end; |
Einloggen, um Attachments anzusehen!
_________________ MfG Lannes
(Nichts ist nicht Nichts) and ('' <> nil ) and (Pointer('') = nil ) and (@('') <> nil )
|
|
iX0r
      
Beiträge: 34
Ubuntu
D6, Lazarus
|
Verfasst: Di 13.12.05 10:27
Lieber Lannes,
du schreibst aber nicht in die Zelle des Stringgrids. Du schreibst auf das zugehörige Canvas. Dass man darauf dann verschiedene Fonts schreiben kann ist klar. NUr geht damit leider jedweder Vorteil des Stringgrids zunichte, denn mit deiner Methode könnte ich ja alles gleich auf ein Image hauen. Aber ein guter (und cleverer!) Workaround ist allemal.
|
|
Lannes
      
Beiträge: 2352
Erhaltene Danke: 4
Win XP, 95, 3.11, IE6
D3 Prof, D4 Standard, D2005 PE, TurboDelphi, Lazarus, D2010
|
Verfasst: Di 13.12.05 13:33
Hallo,
iX0r hat folgendes geschrieben: | ...
du schreibst aber nicht in die Zelle des Stringgrids. Du schreibst auf das zugehörige Canvas. Dass man darauf dann verschiedene Fonts schreiben kann ist klar. |
Der Text wird in den Rect-Bereich der Zelle auf dem Canvas ausgegeben,
so gesehen schreibe ich in die Zelle.
Bezogen auf das Array Cells sieht das dann etwas anders aus.
Um die Fonts und die zugehörigen Teilstrings zu speichern
kann man die Möglichkeit der Eigenschaft Objects nutzen.
Und somit schreibe ich wieder in Deinem Sinne in die Zellen.
iX0r hat folgendes geschrieben: | NUr geht damit leider jedweder Vorteil des Stringgrids zunichte, denn mit deiner Methode könnte ich ja alles gleich auf ein Image hauen. |
Da fehlt Dir dann aber einiges  , z.B. Cells, FixedCols, -Rows ..., das kommt dann nahe an die Entwicklung eines neuen StringGrids.
iX0r hat folgendes geschrieben: | Aber ein guter (und cleverer!) Workaround ist allemal. |
finde ich auch 
_________________ MfG Lannes
(Nichts ist nicht Nichts) and ('' <> nil ) and (Pointer('') = nil ) and (@('') <> nil )
|
|
fresewin
Hält's aus hier
Beiträge: 5
WIN XP
D5
|
Verfasst: Di 13.12.05 13:39
Ich komme gut mit dieser Lösung klar.
Ich werde die nur in der FixedRow ganz oben anwenden, der Rest wird vom Anwender mit Zahlen gefüllt,
sodass der Vorgang bei onshow schon fertig ist.
Gruß und vielen Dank
FreseWin
|
|