Protagonist - 30
Champion
(offline)
Dabei seit 05.2010
2451
Beiträge
|
Geschrieben am: 26.11.2011 um 11:48 Uhr
Zuletzt editiert am: 26.11.2011 um 11:55 Uhr
|
|
Hi,
ich soll folgende Aufgabe machen:
![[verlinkte Grafik wurde nicht gefunden]](http://img835.imageshack.us/img835/517/screenkj.png)
Ich hab mir überlegt dass ich mit einer Schleife 30-mal eine TPaintBox erstelle, die dann jeweils höhere Werte bei den Eigenschaften "Top" und "Left" hat, wie das mit dem Farbverlauf geht muss ich mir noch anschauen.
Nur wie kann ich im Core eine TPaintBox erstellen? Wenn ich TPaintBox.Create benutze weiß ich nicht welche Parameter ich eingeben soll.
Oder kann ich eine TPaintBox irgendwie duplizieren?
Wäre nett wenn mir jemand helfen könnte :)
Edit: Außerdem fällt mir gerade auf, dass eine TPaintBox mit der Color-Eigenschaft "clBlack" trotzdem weiß ist...
|
|
KnC - 39
Halbprofi
(offline)
Dabei seit 12.2004
155
Beiträge
|
Geschrieben am: 26.11.2011 um 11:59 Uhr
|
|
Ich würde es auf anhieb mit nem Array erzeugen. Vielleicht geht das, dass du immer eine die Box in eine "Array-Variable" einliest und diese dann auf'm Bildschirm ausgibst. Bin nicht so in Pascal bewandert. Von dem her nur ein grober Vorschlag.
|
|
Protagonist - 30
Champion
(offline)
Dabei seit 05.2010
2451
Beiträge
|
Geschrieben am: 26.11.2011 um 12:18 Uhr
|
|
Da wir Arrays noch nicht behandelt haben denke ich dass es noch eine andere Möglichkeit geben muss.
Wir hatten bis jetzt if und Schleifen, damit sollte es gehen (ich weiß nur nicht wie) :D
|
|
KnC - 39
Halbprofi
(offline)
Dabei seit 12.2004
155
Beiträge
|
Geschrieben am: 26.11.2011 um 12:57 Uhr
Zuletzt editiert am: 26.11.2011 um 13:04 Uhr
|
|
OK. Dann keep it Simple..
Einfach mit ner For-Schleife von i=1 bis i=X X=soviele Boxen wie du brauchst
und bei jedem durchlauf einfach der Box neue attribute geben,
zum Beispiel:
Box.Left = i+10
Box.Colour = i+5
Du solletst aber nicht immer die gleiche Box bearbeiten, sondern bei der Schleife eine neue box hinzaubern!
Reicht die Angabe?
|
|
Protagonist - 30
Champion
(offline)
Dabei seit 05.2010
2451
Beiträge
|
Geschrieben am: 26.11.2011 um 13:08 Uhr
|
|
Soweit bin ich (gedanklich) auch schon, nur ich bräuchte den Befehl, mit dem ich eine neue Box hinzaubere
|
|
alestorm - 34
Fortgeschrittener
(offline)
Dabei seit 10.2011
37
Beiträge
|
Geschrieben am: 26.11.2011 um 13:56 Uhr
|
|
leider hab ich pascal selbst auch noch nie benutzt, aber im grunde genommen wird in den meisten gängigen objektorientierten Sprachen zum erzeugen neuer objekte der new operator zum aufruf des konstruktors verwendet...
um ein neues objekt vom typ TPaintBox zu erzeugen sollte der aufruf, wenn mich nicht alles täuscht also ungefähr so aussehen:
TPaintBox meinePaintBox = new TPaintBox();
wobei ich nicht genau weiß, ob in pascal mit = oder mit := zugewiesen wird und solche späße
hoffe das bringt dir was ;)
danach solltest du halt noch position, farbe und größe festlegen
wie man darauf zugreift weißt du hoffentlich, ansonsten würd ichs mit
meinePaintBox->Top = 50+i*10;
oder
meinePaintBox.Top = 50+i*10;
versuchen
|
|
alestorm - 34
Fortgeschrittener
(offline)
Dabei seit 10.2011
37
Beiträge
|
Geschrieben am: 26.11.2011 um 14:07 Uhr
|
|
okay, ich hab grade gegoogled...
offenbar erzeugst du per .Create aufruf ein neues Objekt.
var meinePaintBox: TPaintBox;
und dann in der for schleife
meinePaintBox := TPaintBox.Create();
in den klammern von Create kannst du unter umständen auch schon werte übergeben, musst dir in der dokumentation dazu raussuchen, ob es einen konstruktor gibt, der top, left, width, height und color entgegen nimmt, der wäre perfekt für deine zwecke
|
|
Protagonist - 30
Champion
(offline)
Dabei seit 05.2010
2451
Beiträge
|
Geschrieben am: 26.11.2011 um 14:14 Uhr
Zuletzt editiert am: 26.11.2011 um 14:14 Uhr
|
|
Danke für die Hilfe, nur leider sind meine PaintBoxes nicht sichtbar (trotz visible=true)...
|
|
alestorm - 34
Fortgeschrittener
(offline)
Dabei seit 10.2011
37
Beiträge
|
Geschrieben am: 26.11.2011 um 14:18 Uhr
|
|
hmmm leider kann ich für Pascal keine Klassendokumentation online finden, sonst könnte ich dir vielleicht sagen, woran es liegt...
es könnte bei der Methode mit der for-Schleife allerdings auch passieren, dass du am ende nur eine PaintBox erhältst, deren werte immer wieder überschrieben werden...
genaueres kann ich dir so ohne weiteres jetzt leider auch nicht sagen...
gibts dafür denn eine kostenlose entwicklungsumgebung? ^^
dann könnte ichs nachher mal selbst ausprobieren
|
|
Protagonist - 30
Champion
(offline)
Dabei seit 05.2010
2451
Beiträge
|
Geschrieben am: 26.11.2011 um 14:21 Uhr
|
|
Ja die gibt's, nennt sich Lazarus.
|
|
alestorm - 34
Fortgeschrittener
(offline)
Dabei seit 10.2011
37
Beiträge
|
Geschrieben am: 26.11.2011 um 16:39 Uhr
|
|
so, also erstmal zu deinem problem mit der PaintBox...
ich persönlich hab absolut keine ahnung, was die klasse sein soll... fest steht nur, dass die nicht für deine zwecke dienlich ist ^^
was du verwenden solltest ist ein TShape
das ist in der standardausführung einfach rechteckig...
die farbe wird unter der rubrik Brush->Color festgelegt, damit klappts auf jedenfall schonmal, dass es angezeigt wird...
für weiteres würde ich allerdings wirklich die von jemand anders bereits erwähnten Arrays empfehlen um die vielen Rechtecke zu modellieren
|
|