Autor Beitrag
jackle32
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 183
Erhaltene Danke: 7

Win7
Delphi XE5 Starter, RAD Studio XE7 Pro
BeitragVerfasst: Mi 29.08.07 11:50 
Hallo,

gibt es die Möglichkeit den Text eines Edit-Fenster vertikal zu zentrieren und horizontal auch zentriert oder links anfangen zu lassen.

MfG Jack


Moderiert von user profile iconChristian S.: Topic aus Neue Einträge / Hinweise / etc. verschoben am Mi 29.08.2007 um 15:15
Leuchtturm
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1087

Win Vista, Knoppix, Ubuntu
Delphi 7 Pe, Turbo Delphi, C#(VS 2005 Express), (X)HTML + CSS, bald Assembler
BeitragVerfasst: Mi 29.08.07 14:07 
1. Falsche sparte

In einem normalen Edit geht das nicht. Am besten nimmst du TAlignedit(irgendwie so).
Leuchtturm
hansa
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3079
Erhaltene Danke: 9



BeitragVerfasst: Mi 29.08.07 17:06 
Mache eigene Komponente und fertig. Mehr ist das nicht :

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
...
  TMeinEdit = class(TEdit)
  private
    FAlignment: TAlignment;
  published
    property Alignment: TAlignment read FAlignment write SetAlignment;

procedure TMeinEdit.SetAlignment (Value: TAlignment);
begin
  FAlignment := Value;
  RecreateWnd;
end;

_________________
Gruß
Hansa
Wolle92
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 1296

Windows Vista Home Premium
Delphi 7 PE, Delphi 7 Portable, bald C++ & DirectX
BeitragVerfasst: Mi 29.08.07 17:53 
wieso soll denn da falsche Sparte sein? Ich hätte das auch hier reingestellt... ist ja schließlich nen TEdit und nen TEdit gehört zur VCL
hansa
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3079
Erhaltene Danke: 9



BeitragVerfasst: Mi 29.08.07 18:04 
Falsche Sparte ist doch Kappes. :mrgreen: Gehts jetzt ?

_________________
Gruß
Hansa
jackle32 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 183
Erhaltene Danke: 7

Win7
Delphi XE5 Starter, RAD Studio XE7 Pro
BeitragVerfasst: Mo 03.09.07 10:01 
Nein, was aber ehr daran liegt, dass ich nicht weiß wo ich die Implementierung genau hinschreiben muss und wie ich sie dann benutze. Hier mal man Kopf meiner Unit

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:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
type
  TForm1 = class(TForm)
    Erg: TEdit;

    Panel1: TPanel; Panel2: TPanel;

    Button1: TButton; Button2: TButton; Button3: TButton; Button4: TButton;
    Button5: TButton; Button6: TButton; Button7: TButton; Button8: TButton;
    Button9: TButton; Button10: TButton; Button11: TButton; Button12: TButton;
    Button13: TButton; Button14: TButton; Button15: TButton; Button16: TButton;
    Button17: TButton; Button18: TButton; Button19: TButton;

    procedure FormCreate(Sender: TObject);
    procedure ZahlenClick(Sender: TObject);
    procedure ZeichenClick(Sender: TObject);
    procedure ErgebnisClick(Sender: TObject);
    procedure ClearEditClick(Sender: TObject);
    procedure ClearAllClick(Sender: TObject);
    procedure PlusMinusClick(Sender: TObject);
    procedure PunktClick(Sender: TObject);
    procedure ErgClick(Sender: TObject);
    procedure ErgKeyPress(Sender: TObject; var Key: Char);
    procedure FormKeyPress(Sender: TObject; var Key: Char);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;
  Zahl1, Zahl2, Ergebnis: Real;
  Zeichen: Integer;
  Loeschen, Merker, Enter: Boolean;

const

DEFAULT = 0;

implementation

{$R *.dfm}


Bitte mal erklären wo ich was hinschreiben muss und wie ich des dann benutze. Danke schon mal.

Gruß Jack
hansa
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3079
Erhaltene Danke: 9



BeitragVerfasst: Mo 03.09.07 12:08 
Du willst einer Form etwas beibringen, was die Edits darauf gar icht können ? :shock:

1. neue Unit (nicht Form !)
2. Deklaration muss in die Typen-Deklaration
3. die Implementierung der Prozedur muss in den Implementation - Abschnitt

was schreibe ich denn da ? Der Quelltext ist ziemlich selbsterklärend. Ist ja kein C. :mrgreen:

4. die Unit mit den paar Zeilen speichern
5. jetzt muss ein package her, also neu -> weitere -> package
6. hinzufügen : Unit auswählen, compilieren, installieren

_________________
Gruß
Hansa
jackle32 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 183
Erhaltene Danke: 7

Win7
Delphi XE5 Starter, RAD Studio XE7 Pro
BeitragVerfasst: Mo 03.09.07 12:14 
Ah okay dann geht des doch nicht so einfach wie ich dachte.

Danke für die ausführliche Antwort, werd des dann mal versuchen, wenn ich Zeit dafür finde. Find die Lösung aber recht interessant, da ich des dann nur einmal machen muss und dann immer wieder in anderen Projekten auch verweden kann.

Danke

Gruß Jack
hansa
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3079
Erhaltene Danke: 9



BeitragVerfasst: Mo 03.09.07 12:38 
user profile iconjackle32 hat folgendes geschrieben:
...da ich des dann nur einmal machen muss und dann immer wieder in anderen Projekten auch verweden kann.


So ist es. Du erweiterst ja quasi deine IDE und hast dann noch ein Edit mit Ausrichtung überall verfügbar. Statt einem normalen TEdit legst Du dann eben jeweils ein TMeinEdit auf die Forms.

Allerdings fehlt das hier noch :

ausblenden Delphi-Quelltext
1:
2:
3:
4:
procedure Register;
begin
  RegisterComponents('Eigene', [TMeinEdit]);
end;


Delphi muss ja wissen, wo das in der Komponentenpalette hin soll. Im Beispiel wäre dann eine neue Registerkarte "Eigene" vorhanden. Und da drauf dann das TMeinEdit. Bei solchen Sachen auch UNBEDINGT auf vernünftige Namensgebung achten !!

_________________
Gruß
Hansa
jackle32 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 183
Erhaltene Danke: 7

Win7
Delphi XE5 Starter, RAD Studio XE7 Pro
BeitragVerfasst: Mi 05.09.07 09:02 
So hab des jetzt mal ausprobiert, hab also das Package erstellt und installiert (@ hansa: gut Anleitung besten Dank).
Hab jetzt aber das Problem, das er mir zwar das Programm ohne Fehler ausführt aber die Ausrichtung des Textes nicht ändert. Ich muss doch die Prozedur SetAlignment auf rufen und im da solche Werte übergeben wie "taLeftJustify, taRightJustify, taCenter" oder nich?

Es funktioniert auf jeden Fall noch nicht und ich wüsste nicht woran es liegen kann, da er mir ja auch keine Fehler ausgibt.

Gruß Jack
hansa
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3079
Erhaltene Danke: 9



BeitragVerfasst: Mi 05.09.07 17:11 
Zeige mal, was bisher da ist.

_________________
Gruß
Hansa
hansa
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3079
Erhaltene Danke: 9



BeitragVerfasst: Mi 05.09.07 17:35 
Ne, lass sein. Wird nichts nützen. Da hat noch wichtige Prozedur gefehlt. Wäre purer Zufall, wenn da jemand von alleine drauf kommt. Die komplette funktionierende Komponente hängt hier dran.
Einloggen, um Attachments anzusehen!
_________________
Gruß
Hansa
TProgger
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 148

XP
D6, D2007 prof
BeitragVerfasst: Mi 05.09.07 18:58 
nimm doch TALignEdit, ne fertige Komponente.
Einloggen, um Attachments anzusehen!
hansa
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3079
Erhaltene Danke: 9



BeitragVerfasst: Mi 05.09.07 19:54 
Scherzkeks. :mrgreen: Jetzt hat er bis auf Feinheiten zweimal dieselbe. Hauptunterschied ist vor allem, die eine ist "fertig" und meine ist selber gemacht. :lol:

Werde die "fertige" jetzt trotzdem mal kurz zerpflücken. :mrgreen: Bzw. noch was dazu erklären :

1. die uses Liste enthält viel unnötiges. Was hat da Forms, Graphics usw. drin verloren ?
2. der Constructor ist so nicht nötig. Es wird ja von TEdit abgeleitet und das ist standardmäßig sowieso linksbündig.
3. die Identifier sind etwas komisch benannt (ealeft usw.) und teilweise auch an falscher Stelle. ealeft usw. werden nur in CreateParams gebraucht. Warum sind die global deklariert ?
4. weil : er das hier wohl nicht kennt : FAlignment := taRightJustify; Er deklariert eigene Konstanten mit eigenem Namen für bereits vorhandenes.

Alle diese Kleinigkeiten bewirken dann z.B., dass MeinEdit 3,8 KB hat und das AlignEdit 4,4 KB. Bei Zahlen-Edits gibts bei mir auch einen Constructor, wo diese Zeile drinsteht. Aber hier NOCH nicht nötig. Zahlen-Edits würde ich dann sowieso von dem TMeinEdit ableiten. Die Ausrichtung ist ja dann schon mal da. Nur Zahlen zulassen ? Na, einfach im KeyPress ansetzen und in dieser Komponente lediglich noch das hinzufügen (in protected-Abschnitt) :
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
procedure TMeinIntEdit.KeyPress(var Key: Char);
begin
  inherited KeyPress(Key);
  if not (Key in ['0'..'9']) then
    key := #0;
end;


Der Rest bleibt, wie er ist. Soweit noch ein paar Tips für die, die Angst vor eigenen Komponenten haben. :P "Fertig" ist nicht immer besser. Flexibler wird man dadurch jedenfalls mal nicht.

_________________
Gruß
Hansa
jackle32 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 183
Erhaltene Danke: 7

Win7
Delphi XE5 Starter, RAD Studio XE7 Pro
BeitragVerfasst: Do 06.09.07 08:23 
Hallo,

also jetzt funktioniert es super, danke.

Nur noch eine Frage, was macht die neu hinzu gekommene Prozedur und wann wird diese aufgerufen?

Gruß Jack
hansa
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3079
Erhaltene Danke: 9



BeitragVerfasst: Do 06.09.07 12:46 
CreateParams oder das KeyPress ? Das CreateParams regelt das Aussehen des Fensters. Für Windows ist auch das Edit-Feld ein Fenster, das eben auch ausgerichtet werden kann. Was genau gemacht wird, kann man im VCL Quelltext nachgucken.

Das KeyPress erlaubt eben nur die Eingabe von Zahlen. Hierzu muss noch eine Klasse her :
ausblenden Delphi-Quelltext
1:
2:
3:
4:
TMeinIntEdit = class (TMeinEdit)
  protected
    procedure KeyPress(var Key: Char); override;
end;


Unten im Implementation-Teil muss dann die ganze Prozedur hin. Wenn dann noch in der Register-Prozedur die Komponenten-Menge um TMeinIntEdit erweitert wird, dann stehen oben bei der Registerkarte "Eigene" eben zwei neue Edits zur Verfügung.

_________________
Gruß
Hansa