[Delphi/allg.] allgemeine Fragen

tedlemegba

abgemeldet
20 April 2006
2.729
175
Break: neuere Fragen gibt's unten; die oberen sind aber immer noch aktuell!

Ahoi!

Da ich meine Facharbeit wohl aus einem (in Delphi/ObjectPascal) entwickelten Programm bestehen wird, sollte ich mir langsam mal Gedanken über die Entwicklung/Umsetzung machen.

Ein wichtiger Teil des Programmes wird es sein, Messwerte einzugeben.
Kurz und prägnant: in etwa ein x und ein f(x).

Die Frage ist schon mal grundlegend. Wie soll ich das realsieren - mit welchen Komponenten. Dazu muss ich sagen, dass ich in Delphi noch ein voller noob bin, mir aber das nötige Wissen aneignen werde! Es geht jetzt eigentlich primär um die Methoden der Verarbeitung und Nutzerfreundlichkeit.

Nun: wie soll die Eingabe erfolgen?

---
2 TEdit-Boxen für x und f(x), 1 TButton zum Einfügen, 1 TButton zum Ändern; 2 TListBoxen für die Darstellung aller x-/f(x)-Werte?

---
Ein TValueListEditor? Keine Ahnung, wie man mit dieser Komponente umgeht und ob sie sich eignet.

---
Ein TStringGrid? Ebenfalls ist mir die Verarbeitung total unbekannt. Auch ungeeignet? Sieht zumindest sehr unschön aus.


Oder gibt es eventuell bessere Komponenten?
Es geht halt darum, dass man rel. einfach Werte einfügen und löschen kann und ich diese dann Verarbeiten kann.

Auslesen via zweidimensionales Array (o.ä.; die Datentypen in ObjectPascal sind mir eh noch nicht so ganz klar) wäre schon recht cool, aber gut - da muss ich wohl relativ flexibel sein! :)

Für Hilfe wäre ich schon mal dankbar auf jeden Fall! :)
 
Zuletzt bearbeitet:
also ich wuerde die 2. und 3. Komponente vorschlagen.

Die 2. sofern man die Daten nicht bearbeiten muss und die 3. falls dies doch der Fall sein sollte. Evl. kann man auch ne Mixtour aus beidem zaubern aber das ist bei deinem Kenntnisstand wohl erstmal nicht anzuraten ;)
 
buggle schrieb:
Die 2. sofern man die Daten nicht bearbeiten muss und die 3. falls dies doch der Fall sein sollte. Evl. kann man auch ne Mixtour aus beidem zaubern aber das ist bei deinem Kenntnisstand wohl erstmal nicht anzuraten ;)
Hrhr. Danke schonmal. Doch Bearbeitung ist denke ich schon nötig und wichtig. Kann man bei Komponente Nummer 3 die dunkelgraue Spalte/Zeile entfernen? Zumindest die linke Spalte hätte ich gerne weg - und die Zeile würde ich gerne beschriften aber gut, ich werd mir dann die verwendete Komponente schon genau anschauen und lernen. :ugly: :biggrin:

Edit: okay, FixedCols.. evtl. doch mal näher anschauen. Danke auch dir Seeman! ^^
 
Hmm, also die erste Möglichkeit sieht etwas improvisiert und unprofessionell aus, das würde ich nicht machen.

Die Methode mit dem StringGrid gefällt mir am Besten. Einfach Werte in die Zellen eintragen und mit Return (oder zur Not mit einem Button) wird eine neue Zeile hinzugefügt und die alte abgespeichert. Wie das in Delphi zu realisieren ist weiß ich nicht aus dem Stehgreif, aber einfacher als in MS C++ sollte es sein :ugly:

Für die erste Spalter (die Graue) würd' ich eventuell einen Zähler einbauen, der dann von oben (1) bis zum Ende (n) durchzählt.
 
um die linke spalte wegzukriegen die Eigenschaft FixedCols auf 0 stellen, dann noch defaultrowheight auf 18 stellen, dann siehts mal einwenig mehr nach "Standard" aus :p

Ansprechen tust du die Zellen mit stringgrid.cells()
 
dinosaur schrieb:
um die linke spalte wegzukriegen die Eigenschaft FixedCols auf 0 stellen, dann noch defaultrowheight auf 18 stellen, dann siehts mal einwenig mehr nach "Standard" aus :p
Jopp. Das hatte ich mittlerweile auch herausbekommen, danke! Kann man in ein TStringGrid eigentlich überhaupt direkt reinschreiben? Eher nicht, oder? Weil dann liefe es ja auch wieder darauf raus, dass ich zwei 2 TEdit-Boxen und mindestens einen TButton bräuchte?
 
Die Edit-Felder würde ich an deiner Stelle sowieso verwenden. Du kannst dann ziemlich leicht überprüfen, ob eingegebene Werte ok sind. Nach dem Buttonklick wird es überprüft und unten in die Liste aufgenommen.
Da hast du dann den Datensatz jederzeit auf Abruf bereit.
 
evident schrieb:
Die Edit-Felder würde ich an deiner Stelle sowieso verwenden. Du kannst dann ziemlich leicht überprüfen, ob eingegebene Werte ok sind. Nach dem Buttonklick wird es überprüft und unten in die Liste aufgenommen.
Da hast du dann den Datensatz jederzeit auf Abruf bereit.
Sowas müsste mit der OnChange()-Methode für die StringGrid-Zellen eleganter gehen.
 
Okay, dann noch mal die Frage: ist das TStringGrid editierbar. Dem Anschein nach kann man nur mit Methoden drauf zugreifen!
 
Weiter geht's!

DelphiKing nannte mir die TListView als weitere Darstellungsmöglichkeit (danke!). Sieht auch recht nett aus!

Allerdings ergaben sich Probleme/Fragen:



Obere TListView: die 3. Spalte (Rest, überflüssig) ist ins Unsichtbare geschoben. Unsauber: der horizontale Scrollbalken (kann man ihn entfernen? fand keine property) und die obere rechte Ecke (sollte eher wie obige linke Ecke aussehen bezügl. "Schatteneffekte"/"Plastizität").

Untere TListView: 3. Spalte da -will ich aber nicht. Trotzdem oben rechts eine unschöne Ecke.

Fragen: wie kriege ich Spalte und/oder Scrollbalken weg und das Eck "schön"? :mrgreen:


Gibt es btw eine deutsche und/oder englische Befehlsreferenz ähnlich php.net für PHP.. sprich: mit Suche und Übersichtsseiten und den einzelnen properties und events, die erklärt werden?

Danke! :D


Edit: Vermutung.. für die unschöne Ecke bin ich schuld... @BorderStyle: bsSingle.
 
Neue Frage:

Ich hab ein Array c mit dem Index z. Der Typ der Elemente des Arrays wurde von mir als neuer Typ TFoo festgelegt, welcher ein RECORD ist (mittlerweile hab ich dazu gelernt :ugly: ). Ist es möglich mit einer Art Summenfunktionen, etc. den Durchschnitt von x und y zu errechnen oder läuft es auf ein Schleifen-Workaround hinaus?

Code:
[FONT="Courier New"]type TFoo = RECORD
        x, y: Real;
        END;
var z: Integer;
    c: Array[1..100] of TFoo;[/FONT]

Danke! :D

Gibt es btw foreach-ähnliche Schleifen? Oder kann ich ähnlich wie in PHP auch mit while-Schleifen arbeiten bei Arrays. Ist es nämlich auch möglich, wenn das Array Indizes-Lücken aufweist (z.B. 1,2,4,5,7,8,..) oder ist das in Delphi/ObjectPascal gar nicht erlaubt?
 
Moin,

es gibt kein Array mit Luecken ;) Die Werte dazwischen sind moeglicherweise einfach nur nicht initialisiert, was sich hier aber als Problem erweisen koennte. Du solltest das Array vorher auf jedenfall "0en". Dann kannst du auch die Felder mit den Luecken addieren, ohne den Wert zu verfaelschen.
 
buggle schrieb:
Dann kannst du auch die Felder mit den Luecken addieren, ohne den Wert zu verfaelschen.
Ahoi... Okay danke!

Die Array-Elemente sind ja Records mit .x und .y. Ist es nun möglich, die Addition über (irgend)eine Funktion stattfinden zu lassen oder brauche ich eine Schleife? Wie ermittle ich die Anzahl der Elemente eines Arrays (Edit: Length.. wo finde ich denn solche Selbstverständlichkeiten - mein Buch spricht diese leider nicht an).
 
Zuletzt bearbeitet:
das erste Element findest du mit low() und das letzte mit high(). Aber ob das deine Frage beantwortet weiß ich nicht ;)
 
buggle schrieb:
das erste Element findest du mit low() und das letzte mit high(). Aber ob das deine Frage beantwortet weiß ich nicht ;)
Nein. :(

Die Frage richtete sich an
a) das Herausfinden der Anzahl der Elemente :)arrow: als Length() gefunden) und
b) ob ich denn nun eine Schleife verwenden muss die ich von 1 bis n=Length() durchgehen muss, oder ob es bessere Schleifen gibt und
c) ob ich überhaupt eine Schleife brauche, oder es einfacher geht.