Autor Beitrag
juergen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 87



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 49

WIN XP, Linux
D7 Pro
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 87



BeitragVerfasst: Di 06.01.04 10:45 
wie finde ich den ASCII Code für PHI oder ALPHA etc. heraus ?
Simon Joker
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 236
Erhaltene Danke: 1



BeitragVerfasst: Di 06.01.04 12:25 
Hi Jürgen

ganz einfach 8)


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
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 4373

Ubuntu 7.10 "Gutsy Gibbon"

BeitragVerfasst: 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 :mrgreen:

_________________
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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 87



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 236
Erhaltene Danke: 1



BeitragVerfasst: Di 06.01.04 16:06 
@Tommie-lie

Geschwindigkeit ist nicht alles! :D

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
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
....
    //laden
    Error:=AddFontResource(pchar(FontFileName));
    //Fehlerprüfung
    if Error<>0 then
      ShowMessage('Font nicht geladen');
    //Systemnachricht    
    SendMessage(HWND_BroadCast,WM_Fontchange,0,0);
....

wieder löschen
ausblenden 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 87



BeitragVerfasst: Di 06.01.04 17:12 
@Simon Joker,

und im Stringgrid ?
CenBells
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1547

Win 7
Delphi XE5 Pro
BeitragVerfasst: 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
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 34

Ubuntu
D6, Lazarus
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2889
Erhaltene Danke: 13

W2000, XP
D6E, BDS2006A, DevExpress
BeitragVerfasst: 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:

ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2352
Erhaltene Danke: 4

Win XP, 95, 3.11, IE6
D3 Prof, D4 Standard, D2005 PE, TurboDelphi, Lazarus, D2010
BeitragVerfasst: Mo 12.12.05 10:10 
Hallo,
user profile iconiX0r hat folgendes geschrieben:
Also, zwei verschiedene Schriftarten können nicht in der gleichen Zelle verwendet werden.
...

soviel Schriftarten wie Du willst, ist kein Problem :wink:
Der Folgende Code benutzt Wingdings und Arial in einer Zelle.
Hab ein Screenshot angehängt.
ausblenden volle Höhe Delphi-Quelltext
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]);//Top + x = nächste Zeile
        end;
end;
Einloggen, um Attachments anzusehen!
_________________
MfG Lannes
(Nichts ist nicht Nichts) and ('' <> nil ) and (Pointer('') = nil ) and (@('') <> nil )
iX0r
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 34

Ubuntu
D6, Lazarus
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2352
Erhaltene Danke: 4

Win XP, 95, 3.11, IE6
D3 Prof, D4 Standard, D2005 PE, TurboDelphi, Lazarus, D2010
BeitragVerfasst: Di 13.12.05 13:33 
Hallo,
user profile iconiX0r 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.

user profile iconiX0r 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.

user profile iconiX0r hat folgendes geschrieben:
Aber ein guter (und cleverer!) Workaround ist allemal.
finde ich auch :wink:

_________________
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
BeitragVerfasst: 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