Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Desingntime, aber nicht Runtime (https://www.delphipraxis.net/184295-desingntime-aber-nicht-runtime.html)

Mattze 16. Mär 2015 09:59

Desingntime, aber nicht Runtime
 
Hallo,

komisch, eigentlich hatte ich bisher immer das umgekehrte Problem... (D7 pro)

Ich habe eine eigene Listview-Komponente von TCustomlistview abgeleitet.
Da kann ich auch die Headerhöhe setzen (unter anderem).
Das klappt auch ganz gut - während der Designtime.
Während der Runtime ist da plötzlich wieder die alte Höhe.

Wie geht denn sowas?
Was kann man dagegen tun?

(Übrigens: Ich kann die Headerheight zwar während der Designtime verändern, sie wird aber wahrscheinlich nicht abgespeichert! Jedenfalls wird danach nicht zum Speichern aufgefordert. Was tun?)

Gruß
Mattze

himitsu 16. Mär 2015 10:05

AW: Desingntime, aber nicht Runtime
 
Zitat:

Zitat von Mattze (Beitrag 1293583)
... wird aber wahrscheinlich nicht abgespeichert!
Was tun?)

Erstmal ein definitiv daraus machen?
(was steht in der DFM)

Wurden die gewünschten Property auch nach Published verschoben, welche gespeichert werden sollen?



Und weiter können wir nicht weiter helfen, da keiner weiß was du gemacht hast, in deiner eigenen geheimen Komponente.

mkinzler 16. Mär 2015 10:06

AW: Desingntime, aber nicht Runtime
 
Zitat:

(Übrigens: Ich kann die Headerheight zwar während der Designtime verändern, sie wird aber wahrscheinlich nicht abgespeichert! Jedenfalls wird danach nicht zum Speichern aufgefordert. Was tun?)
Du wirst nie dazu aufgefordert werden, wenn du angegeben hast, ghast die Eigenchaft gestreamt werden soll ( buw. nicht das sie das nicht) wird diese beim Speichern des Formulars der Wert dort entsprechend abgelegt.

Wie sieht die Definition der Property aus?

Mattze 16. Mär 2015 10:59

AW: Desingntime, aber nicht Runtime
 
Hallo himitsu,

nee!!! Geheim ist die überhaupt nicht.
Kannst Du alles haben - ist aber zurzeit noch völlig unzumutbar! Absolutes Durcheinander. Ich bin ja froh, dass ich mich in meinem Zeug noch selber zurecht finde.
Ich bin da mächtig am Spielen...

Angefangen habe ich mit Sortarrows und dann kam eben eins zum anderen und ich wollte doch mal sehen, wie weit man den Header aufbohren kann.

Da ist kaum etwas auf meinem Mist gewachsen. Alles im Netz gefunden und zusammengepfrimelt.

Ich habe eben noch mal geschaut. Im Formular als Text steht die Headerhöhe mit dem geänderten Wert drin.
(Hätte ich vorher gucken müssen. Ich weiß! Asche auf mein Haupt!!!)
Sie wird also gespeichert.
Die Eigenschaft ist published in der Header-Klasse,die in der Ableitung genutzt wird.

Komisch ist, das sie dann beim nächsten Start wieder auf den falschen Ursprungswert gesetzt wird!

Gruß
Mattze

oki 16. Mär 2015 12:40

AW: Desingntime, aber nicht Runtime
 
Setzt du an einer Code-Stelle einen "default"-Wert für die Höhe? Vielleicht wird zwar richtig gespeichert und gelesen, aber im Nachgang überschrieben.

Gruß oki

himitsu 16. Mär 2015 12:56

AW: Desingntime, aber nicht Runtime
 
[falsch]

DeddyH 16. Mär 2015 13:09

AW: Desingntime, aber nicht Runtime
 
Schön, dass Du mal ganz offen über alles gesprochen hast :mrgreen:

Mattze 23. Mär 2015 08:16

AW: Desingntime, aber nicht Runtime
 
Hi,

wo das Problem liegt:
Es ist kein Problem, die Headerhöhe einer Listview zu ändern:
Delphi-Quellcode:
var hdr: THandle;

begin
  hdr:=ListView_GetHeader(ListView1.Handle);
  SetWindowPos(hdr, 0   , 0, 0, Listview1.width, 50, 0 );
  InvalidateRect(hdr,nil,True);
Leider wird dann aber die linke obere Ecke der "Restlistview" (also der eigentlichen Liste) nicht automatisch angepasst. Ergebnis: Je nach dem, was gerade vorne ist, wird etwas "übermalt".

Das Rechteck der Restlistview zu bekommen, ist auch kein Problem. (Linke obere Ecke = Linke obere Ecke des Topitems).
Ich habe jedoch noch keine Möglichkeit gefunden, die auch (entsprechend der neuen Headerhöhe) zu setzen. (Dazu müsste man direkt rankommen, aber wie...?)

Man könnte natürlich im OwnerDraw alle Items verschieben. Nur, dann delegiert man das Problem nach unten. Und im Sinne des Laufzeitverhaltens wäre das wohl nicht.
Also, eine echte Lösung wäre das wahrscheinlich nicht.

Ich habe nun etwas gefunden, wie man die Itemheight insgesamt ändern kann. Vielleicht kann man damit etwas zurechtdrehen.
Mal sehen...

Gruß
Mattze


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:13 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