AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi OOP-TRealEdit von TEdit abgeleitet und Fähigkeiten erweitert
Thema durchsuchen
Ansicht
Themen-Optionen

OOP-TRealEdit von TEdit abgeleitet und Fähigkeiten erweitert

Ein Thema von Hansa · begonnen am 9. Apr 2003 · letzter Beitrag vom 14. Aug 2003
Antwort Antwort
Seite 2 von 12     12 34     Letzte »    
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#11
  Alt 12. Apr 2003, 13:04
Moin Hansa,

irgenwie hab' ich den Eindruck, dass die hier meist schnellen Antworten auf Fragen/Beiträge verwöhnen

Zu Deinen Fragen:
  1. Zu jeder Eigenschaft die man deklariert kann man eine Get- (read) und eine Set- (Write) Methode deklarieren, deren Parameter/Rückgabewert durch die Eigenschaft für die man sie benötigt festgelegt sind (wie Du ja inzwischen auch schon festgestellt hast).
    Es gibt hierbei eine sehr einfache Möglichkeit sich das Leben zu erleichtern:
    Man schreibt einfach die Zeile
    property Eigenschaft : Datentyp read GetMethode write SetMethode;
    und drückt dann STRG-SHIFT-C (Caret in der Zeile lassen). Dann werden die Deklarationen automatisch erzeugt.
    Es geht auch auf diesem Wege mehrere Methoden gleichzeitig erzeugen zu lassen. Dies gilt nicht nur für Get/Set sondern auch für alle anderen, deren Header man schon in der Klasse deklariert hat.
  2. Den Wert der standardmässig im OI erscheinen soll kann man im constructor vorgeben.
  3. CreateParams setzt die für den aufruf der CreateWindow erforderlichen Werte (Struktur CREATESTRUCT). Dazu am Besten mal im PSDK unter CreateWindows(Ex) die Einzelheiten nachschlagen.
    In diesem Zusammenhang darf man nicht vergessen, dass ja auch ein Button oder ein Editfeld ein Fenster darstellen, nur eben mit besonderen Eigenschaften.

Wenn die Meldung:

Zitat von Hansa:
"Die Komponente x kann nicht installiert werden, weil sie schon in package y drin ist"
oder ählich kommt muss die Kompo erst einmal entfernt werden, weil nun einmal nicht zwei Kompos mit gleichem Namen gleichzeitig im System vorkommen dürfen.
Deshalb sollte man auch seinen Komponenten immer einen Prefix verpassen um die Wahrscheinlichkeit von Kollisionen zu verringern.
Dazu gab's bei Borland sogar mal die Möglichkeit "seinen" Prefix registrieren zu lassen.
(Beispiel RxLib: Hier fangen die Kompos immer mit Trx an)

Zitat von Hansa:
...zumindest für mich ist es unbegreiflich, daß anscheinend von 99% nur das vorgekaute von Borland benutzt wird.
Das glaub' ich nicht unbedingt. Es ist nur einfacher fertige Komponenten, von wem auch immer, zu verwenden, als selber welche zu schreiben. In manchen Fällen kann es auch eine betriebswirtschaftliche Entscheidung sein:
Eine Komponente zu schreiben und zu testen kann teurer sein, als eine entsprechende fertige zu kaufen.

Vielleicht ändert sich ja durch Diesen und ähnliche Threads etwas, und es fangen doch ein paar mehr mit der Eigenentwicklung an, nachdem die Hemmschwelle erst einmal überwunden ist.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#12
  Alt 12. Apr 2003, 18:01
Hi, Christian, willkommen im Club.

Zitat von Christian Seehase:
...dann STRG-SHIFT-C
Guter Hinweis. Die Feldeigenschaften werden richtig gesetzt. Der Typ wird berücksichtigt usw. Im OI ist das dann auch schon drin.

Zitat von Christian Seehase:
...Den Wert der standardmässig im OI erscheinen soll kann man im constructor vorgeben.
Dann schau Dir mal meine Sourcen an und sage mir, wo das hin muß. Ich meine damit, daß taRightJustify als Standardwert angenommen wird. In CreateParams ist es wohl fehl am Platze. constructor ist im Moment keiner vorhanden.

Zitat:
..Das glaub' ich nicht unbedingt. Es ist nur einfacher fertige Komponenten, von wem auch immer, zu verwenden, als selber welche zu schreiben. In manchen Fällen kann es auch eine betriebswirtschaftliche Entscheidung sein:...
Wenn Du da eine passende findest, schön und gut. Besser ist es wohl dennoch, sie selber zu machen, dann weiß man,was man hat.

Und nun noch zu meinen 99%: vielleicht ist das zu viel, aber ich mache mal folgende Rechnung auf : 1. fast 1200 registrierte Benutzer 2. Zahl der Gäste wesentlich höher (gerade im Moment das 10-fache) 3. Insgesamt 125 Aufrufe des Themas. 4. Antworten von 2 Benutzern. Das sind dann 1.6 Promille. Also das wären 99.84 %, die das alles nicht nutzen. Gehen wir mal von den Lesezugriffen aus : Falls jeder User das ganze nutzt und sich EINMAL durchliest, haben immer noch 90% kein Interesse. Rechnet man die Gäste hinzu landen wir wieder bei 99%.

Traurig, traurig, aber mir egal. Das Thema ist wichtig, das weiß ich.
Gruß
Hansa
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#13
  Alt 12. Apr 2003, 20:09
Moin Hansa,

Zitat von Hansa:
constructor ist im Moment keiner vorhanden.
Dann würd' ich mal vorschlagen:
Füg' einen hinzu und initialisiere dort die Ausrichtung.
Dafür ist der constructor auch da.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#14
  Alt 12. Apr 2003, 20:36
wo soll ich denn den am besten einbauen ? Soll ich da Parameter benutzen ?
Gruß
Hansa
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#15
  Alt 13. Apr 2003, 01:21
Moin Hansa,

ich hoffe mal Dich jetzt richtig verstanden zu haben:

I.d.R. wird ein constructor unter public angelegt, und mit dem Namen Create versehen.

So in der Art:

Delphi-Quellcode:
//...
  published
    constructor Create(AOwner : TComponent); override;
//...

implementation

constructor TDBRealEdit.Create(AOwner: TComponent);
begin
  inherited;
  FAlignment := taRightJustify;
end;

//...
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#16
  Alt 13. Apr 2003, 12:11
sieht aus, als wärs das gewesen. Und nun das nächste:

Code:
procedure TRealEdit.KeyPress(var Key:Char);
var ZulZeichen : SET OF char;
begin
  inherited KeyPress(Key);
  if OnlyReals then begin
    ZulZeichen := ['0'..'9',#8];
    if pos (DecimalSeparator,text) = 0 THEN // kein . im RealEdit.text . zulassen
      ZulZeichen := ZulZeichen + [DecimalSeparator]
    else
      ZulZeichen := ZulZeichen - [DecimalSeparator]; // zweiten . verhindern
    if not (Key in ZulZeichen) then
      Key := #0
    else begin
      if length (text) = 3 then
        text := text + '.';
    end;
  end;
  end;
Man beachte die Zeile :
Code:
text := text + '.'
Testweise soll bei dem 3. Zeichen ein Tausenderpunkt kommen. So sollte es aussehen: 123.456 und das kommt dabei heraus : 456123. Der Punkt ist zwar gesetzt, aber die Eingabe beginnt danach vor der 1. Zuerst also 4123. dann 45123. usw. Sieht da jemand mehr als ich ?
Gruß
Hansa
  Mit Zitat antworten Zitat
[TP]Hawk274
(Gast)

n/a Beiträge
 
#17
  Alt 13. Apr 2003, 14:46
@Christian Seehase
Warum muss schreibst du den Konstruktor in den Published Teil der Klasse? Wie du auch erwähnt hast schreibt man ihn immer in den Public Teil der Klasse, was ich auch immer mache. Worin besteht jetzt darin der Unterschied?
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#18
  Alt 13. Apr 2003, 15:30
Moin Hawk,

da hab' ich nicht aufgepasst.
Der constructor sollte natürlich in den public Teil

published ist ja auch eine Borland Spezialität für den OI.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#19
  Alt 13. Apr 2003, 20:36
die Spezialität ist: protected. ähmmm
Gruß
Hansa
  Mit Zitat antworten Zitat
Benutzerbild von nailor
nailor

Registriert seit: 12. Dez 2002
Ort: Karlsruhe
1.989 Beiträge
 
#20
  Alt 13. Apr 2003, 21:36
Ich habs bis jetzt noch nicht gebraucht, aber jetzt ist der Moment gekommen. Und es ist sehr gut. Wenn jetzt noch jemand ein SpinEdit so umbastelt, dass es damit arbeitet, dann ist demjenigen mein Dank sicher!!!
Michael N.
http://nailor.devzero.de/code/sharpmath/testing/ --- Tests, Feedback, Anregungen, ... aller Art sehr willkommen!
::: don't try so hard - it'll happen for a reason :::
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 12     12 34     Letzte »    


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:33 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