Entwickler-Ecke

Grafische Benutzeroberflächen (VCL & FireMonkey) - Text im Edit rechts ausrichten


mehmeh - Do 19.05.05 15:43
Titel: Text im Edit rechts ausrichten
Hi,

kann mir jemand helfen?
Wie richte ich einen Text im Edit Feld rechts aus?


Moderiert von user profile iconGausi: Topic aus Sonstiges verschoben am Do 19.05.2005 um 15:46


azubi_20 - Do 19.05.05 16:08

Hi mehmeh,

...einfach die Eingenschaft ALIGN des EDIT-Feldes im Objektinspektor auf rightjustify stellen.


StefanH - Do 19.05.05 16:13

eigentlich verpostet. :x

:D edit hat schon eine align eigenschaft, aber die ist TAlign, d.h. type TAlign = (alNone, alTop, alBottom, alLeft, alRight, alClient);, es legt also die ausrichtung des Controls fest.


Fabian W. - Do 19.05.05 16:20

Zitat:
Eingenschaft ALIGN des EDIT-Feldes im Objektinspektor auf rightjustify

In D3 gibst das noch net, wenn es das überhaupt gibt.
Heist sowieso Alignement


azubi_20 - Do 19.05.05 16:40

@ Stefan H. :
Hast natürlich recht :oops:
Ich hab gerade kein Delphi hier und ich bin auch schon ziemlich fertig, sorry...


mehmeh - Do 19.05.05 17:53

also ich hab weder Align noch Alignment unter Edit Eigenschaften des Objekinspektors gefunden.

und nu

was könnt ich machen


Fabian W. - Do 19.05.05 20:37

Du könntest den Text mit leerzeichen auffüllen, is aber arg umständlich.


Tobias1 - Do 19.05.05 21:39

Ich hab auch bei D2005 und JEDI nix gefunden.

Du könntest ja ein Memo nehmen, dort gibt es Alignment.


Fabian W. - Fr 20.05.05 07:10

Die Lösung wäre vorerst ja net schlecht, nur fände ich es besser wenn wir hier nach ner richtige Lösung für dsa OProb. suchen, da sicherlich noch mehr so ein Prob haben.


mehmeh - Mo 23.05.05 11:10

Ich möchte eigentlich nur meine Zahlen rechtsbündig anzeigen lassen, da ist ein Memo ungeeignet, so finde ich.
So wie den Text mit Leerzeichen ausfüllen ebenfalls ungünstig ist.


Delete - Mo 23.05.05 12:30

user profile iconFabian W. hat folgendes geschrieben:
nur fände ich es besser wenn wir hier nach ner richtige Lösung für dsa OProb. suchen, da sicherlich noch mehr so ein Prob haben.

Jupp, und wie wäre es, wenn du das mal machen tätest? Nämlich SUCHEN? Dann hätte man gleich eine Lösung gehabt, ohne posten zu müssen.


Fabian W. - Mo 23.05.05 12:31

Kannst du uns mal n Bild schicken, oder sonst irgendwie klar machen wie genau das dann aussehehn soll, vielleicht könne wir das ja auch ganz anders anstellen. Tipp: Hast du Jedi?
Da findet sich doch sicherlich n Edit mit erweiterten Eigenschaften.


Fabian W. - Mo 23.05.05 13:18

Nimm doch n Panel. Mit Color und den Bevel-Eigenschaften solltest du dann n Edit imitirene können. Allerdings nur zum Anzeigen.


mehmeh - Di 24.05.05 08:24

was ist da so schwer zu verstehen?
Ich will, wie bei einem Taschenrechner, meine Zahlen, die ich eingebe rechts anzeigen lassen.
Beispiel
ich geb ne "1" ein und die taucht rechts auf,
dann geb ich ne "2" ein und die "1" schiebt sich nach vorne und die "2" kommt gleich dahinter --> "12"
ist das jetzt klarer?


Fabian W. - Di 24.05.05 17:38

Achso, wie gibst du die Zahlen ein? per Buttonklick ist deine Frage leicht zubeantworten, ad das ja dann ganz einfach is. Per Tastatur geht das Panel dann halt net.


Delete - Di 24.05.05 20:41

user profile iconmehmeh hat folgendes geschrieben:
was ist da so schwer zu verstehen?
Ich will, wie bei einem Taschenrechner, meine Zahlen, die ich eingebe rechts anzeigen lassen.
Beispiel
ich geb ne "1" ein und die taucht rechts auf,
dann geb ich ne "2" ein und die "1" schiebt sich nach vorne und die "2" kommt gleich dahinter --> "12"
ist das jetzt klarer?

Und ist es so schwer zu verstehen, dass wenn du die Suche mal bemüht hättest, du schon vor fünf Tagen eine Lösung hättest?!?!?? Und so lange ich von deiner Seit keine Bemühungen erkennen kann, dass du dich mal selbst um die Lösung kümmerst, verweige ich jedgliche weitere Hilfe.


mehmeh - Do 26.05.05 08:31

Also das ganze sieht so aus, ich lese Hexadezimale Zahlen ein und gebe Dezimalzahlen per Button klick aus. Mit dem Klick werden Hex in Dec umgewandelt. Das ist alles kein Problem jedoch will ich noch einige Schönheitsoperationen durchführen.
Wie zum Beispiel das rechtsausrichten der Zahlen im Edit.
Es ist ja schon mal nen Anfang das ganze mit Leerzeichen auszufüllen, jedoch ist das nicht die eleganteste Lösung.


jasocul - Do 26.05.05 08:39

user profile iconTobias1 hat folgendes geschrieben:
Ich hab auch bei D2005 und JEDI nix gefunden.

Sorry, dann bist du blind. (JvCalcEdit in den Jedis)

@mehmeh:
Nimm den Rat von Luckie mal an und geh suchen. Ich verrate dir sogar den Suchbegriff: rechtsbündig.


Fabian W. - Do 26.05.05 10:43

Mann müsste jetzt halt wissen ob er was per Tastatur reinschreiben will.


mehmeh - Do 26.05.05 11:15

eigentlich wird in das Feld nichts mit Tastatur eingegeben.
Sonder per Buttonclick.


Fabian W. - Do 26.05.05 11:41

Dann kannst du dein Problem mit nem Panel lösen.


matze.de - Do 26.05.05 11:41

user profile iconFabian W. hat folgendes geschrieben:
Mann müsste jetzt halt wissen ob er was per Tastatur reinschreiben will.

Warum das denn? Das geht auch per Tastertur. Du überschreibst die EingabeRoutine der Komponente und lässt darin zb nur 1,2,3,4,5,6,7,8,9,0,+,-,*,/ zu und der rest wird ignoriert und in den Ereignissen machste das selbe wie bei nem buttonklick....

mfg matze


Fabian W. - Do 26.05.05 11:43

Nein, das war nicht gemeint, da mein Lösungsvorschlag n Panel is, in das man per Tastatur nix reinschreiben kann (zumindeest nicht ohne Code :wink: ).


matze.de - Do 26.05.05 12:04

user profile iconFabian W. hat folgendes geschrieben:
Nein, das war nicht gemeint, da mein Lösungsvorschlag n Panel is, in das man per Tastatur nix reinschreiben kann (zumindeest nicht ohne Code :wink: ).


Ohne Code geht gar nix ;)

mfg matze


Fabian W. - Do 26.05.05 12:05

Zitat:
Ohne Code geht gar nix ;)

Wohl wahr.

Zitat:
Mathias
Quod licet Jovi, non licet bovi.

Wer ist der Ochse?


matze.de - Do 26.05.05 12:07

Quod licet Jovi, non licet bovi heißt so viel wie "Was dem Jupiter erlaubt ist, ist einem Ochsen noch lange nicht erlaubt." ;)

mfg matze


Fabian W. - Do 26.05.05 14:05

Weis ich doch, so blöd ebin ich dann doch net. Ich wollte wissen ob du jemanden bestimmtes mit dem Ochsen meinst.


matze.de - Fr 27.05.05 08:11

Ja ich bin Jupiter und alle Anderen sind Ochsen :mrgreen:
Ne Quatsch hatte keinen bestimmten gemeint. Von mir aus kann ich den auch ändern...

mfg matze


Fabian W. - Fr 27.05.05 08:17

:flehan: ^^. Ok, schluss jetzt mit OT.

Ist das Problem jetzt behoben?


mehmeh - Fr 27.05.05 08:47

JA also ich werd´s dann wohl doch it nen Panel versuchen.
Danke euch

EDIT: ach mensch,
was mir gerade noch eingefollen ist: ICH könnt ja auch nen Label nehmen. zum anzeigen reicht das völlig. Sieht zwar neicht so schön aus, aber da kann ich ja noch dran arbeiten.



Moderiert von user profile iconGausi: Beiträge zusammengefasst.


Fabian W. - Fr 27.05.05 09:50

Das geht, nur is es was rechstbündigkeit betrifft net nagz so flexibel.


mehmeh - Fr 27.05.05 10:20

Ah ha und was heißt das?
Die Eigenschaft Alignment besitze es doch!


Fabian W. - Fr 27.05.05 10:43

*Blp*. Hups ich revidiere meine Meinung und behaupte das Gegenteil :wink: . Mir war nicht bekannt dass ein Label diese Eigenschaft auch besitzt. Du müsstest nur die Eigenschaft Autosize abschalten (auch net sicher is aber besser).


Lannes - Fr 27.05.05 10:51

Hallo,

ein Stringrid als Alternativ-Vorschlag :cool:
Folgende Einstellungen am Stringgrid im OI vornehmen:



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:
procedure TForm1.FormCreate(Sender: TObject);
begin
  activeControl := Stringgrid1;
end;

procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
  Rect: TRect; State: TGridDrawState);
var s     : String;
    aRect : TRect;
begin
  s := StringGrid1.Cells[ACol, ARow];
  aRect := Rect;
  StringGrid1.canvas.brush.color:=clWhite;
  StringGrid1.canvas.fillrect(rect);
  dec(rect.right,8);
  inc(rect.Top,4);
  DrawText(StringGrid1.Canvas.Handle, PChar(s), Length(s), Rect, DT_Right);  
  StringGrid1.canvas.DrawFocusRect(aRect);
end;

procedure TForm1.StringGrid1KeyPress(Sender: TObject; var Key: Char);
begin
  if Key in ['0'..'9'then
    begin
    StringGrid1.Cells[0,0] := StringGrid1.Cells[0,0]+Key;
    key := #0;
    end
    else
      key := #0;
end;


//Edit : Code verbessert, FocusRect wird jetzt überschrieben (XOR).
//Edit2 : KeyPress verändert, jetzt können nur 0 > 9 eingegeben werden.


Delete - Fr 27.05.05 11:04

user profile iconLannes hat folgendes geschrieben:
Hallo,

ein Stringrid als Alternativ-Vorschlag :cool:

Der Vorschlag ist nicht :cool:, sondern :autsch:.


Lannes - Fr 27.05.05 11:08

Hallo,
user profile iconLuckie hat folgendes geschrieben:
user profile iconLannes hat folgendes geschrieben:
Hallo,

ein Stringrid als Alternativ-Vorschlag :cool:

Der Vorschlag ist nicht :cool:, sondern :autsch:.


warum.


Fabian W. - Fr 27.05.05 13:23

Erstens wird nur was angezeigt, nix per Tasta eingeb.
Zweitens geht's einfacher und ohne den ganzen Code, der vielleicht bei anderen Verionnen gar net funzt.


Delete - Fr 27.05.05 13:55

Zusätzlicher Overhead; 99,9% der Funktionalität der StringGrid Komponente wird nicht gebraucht; das StringGrid eine andere Aufgabe hat; man den Missbrauch von Komponenten und Steuerelementen vermeiden sollte. Und es einfach nur Unsinn ist, da man es mit dem Edit wesentlich einfacher hinbekommt.


Lannes - Sa 28.05.05 00:19

Hallo,
user profile iconmehmeh hat folgendes geschrieben:
was ist da so schwer zu verstehen?
Ich will, wie bei einem Taschenrechner, meine Zahlen, die ich eingebe rechts anzeigen lassen.
Beispiel
ich geb ne "1" ein und die taucht rechts auf,
dann geb ich ne "2" ein und die "1" schiebt sich nach vorne und die "2" kommt gleich dahinter --> "12"
ist das jetzt klarer?
genauso sieht es bei der Nutzung des StringGrids aus.

user profile iconFabian W. hat folgendes geschrieben:
Erstens wird nur was angezeigt, nix per Tasta eingeb.
Zweitens geht's einfacher und ohne den ganzen Code, der vielleicht bei anderen Verionnen gar net funzt.
per Tastatur oder wie mehmeh geschrieben hat: "... per Buttonclick" ist eigentlich nicht Thema hier im Thread(siehe Titel), aber kein Problem das im OnClick der Buttons einzubauen.
Bei welchen Versionen soll das nicht klappen? Hier nur Code posten der bei allen Delphi-Versionen lauffähig ist?

user profile iconLuckie hat folgendes geschrieben:
Zusätzlicher Overhead; 99,9% der Funktionalität der StringGrid Komponente wird nicht gebraucht; das StringGrid eine andere Aufgabe hat; man den Missbrauch von Komponenten und Steuerelementen vermeiden sollte. Und es einfach nur Unsinn ist, da man es mit dem Edit wesentlich einfacher hinbekommt.

ja, zusätzlicher Overhead usw. ist richtig, stimme Dir bis auf den letzten Satz zu.

-wesentlich einfacher?-
gewünscht war Editfeld wie in einem Taschenrechner =
Ausrichtung rechts, Hintergrundfarbe weiß, Schrift-Farbe schwarz bei Enabled=False(da gab es doch ein paar Threads bzgl Enabled?), nicht möglich den Cursor zu setzen, nicht markieren

Das habe ich mit meinem Code erreicht, ohne eine Komponente zu erstellen.
Wie geht es einfacher ohne neue Komponente?


Fabian W. - Sa 28.05.05 07:05

Zitat:
Wie geht es einfacher ohne neue Komponente?

Is'n Panel für dich neu?


Aya - Sa 28.05.05 09:13

Hi,

also ich bin mir nicht 100%ig sicher ob sich hier am ende des Threads noch was ergeben hat (hab das ende nur überflogen, weil's mir ab mitte Seite 2 einfach zu dämlich wurde)..

Irgendwie scheint hier keiner so recht an einer lösung des Problems interressiert zu sein, oder???

Die einen kapieren nich was mit einem rechtsbündigem Text gemeint is, die anderen versuchen das ding irgendwie auf die lustigsten umwege zu faken und der eigentliche Fragensteller geht auf die wirklichen Hilfestellungen, nämlich mal die Suchfunktion des Forums zu nutzen, überhaupt nicht ein...

So, und um das ganze jetzt noch ein wenig weiterzuführen.... benutz die suche des Forums!! Das thema wurde schon massig oft angesprochen, und es ist ohne weiteres möglich in einem TEdit (ja, ein TEdit.. kein TMemo, TPanel oder sonstwas fake) auch rechtsbündigen, oder gar zentrierten Text anzuzeigen.. nicht einfach indem man es im ObjectInspector umstellt, aber wie genau lass ich dich jetzt selbst in der Suchfunktion rausfinden.

Au'revoir,
Aya

PS: Normalerweise würde ich ja entweder nen Such-Link oder sogar die lösung Posten.. aber irgendwie fehlt mir hier die lust zu :p