ExpandPanels, Aufklappbare Panels & Automatische Anordnu

Zur Vorstellung von Komponenten und Units für Lazarus
alexander
Beiträge: 423
Registriert: Di 5. Feb 2008, 12:45
OS, Lazarus, FPC: Linux, Lazarus svn, FPC svn
CPU-Target: 64Bit
Kontaktdaten:

Beitrag von alexander »

Euklid hat geschrieben:Sieht gut aus, was du da programmiert hast!
danke. Hört man gerne :-D

Euklid hat geschrieben:Im Source steht die Lizenz GPL2. Hast du vor, die Komponente eines Tages zusätzlich unter GPL3 zu stellen?
jaa... ich hatte mich noch nicht mit den Unterschieden zwischen GLP2 und 3 beschäftigt,... und stelle sie faulheitshalber unter 2.
Wenn ich mich mal damit beschäftige werde ich sie wahrscheinlich auf 3 umstellen.
Der Unterschied dürfte marginal sein... aber wie gesagt, noch nicht beschäftigt.....
Zuletzt geändert von alexander am Do 3. Jul 2008, 10:33, insgesamt 1-mal geändert.
Du magst Freiheit? Gönne es auch deinem Computer mit Linux!
www.alexanderroth.eu

EugenE
Beiträge: 440
Registriert: So 10. Dez 2006, 14:59
OS, Lazarus, FPC: MacOSX Lion 10.7 (L 0.9.31 FPC 2.7.1)
CPU-Target: 64Bit
Kontaktdaten:

Beitrag von EugenE »

alexander hat geschrieben:Bitte genau lesen, bevor die Lösung kritisieren!
alexander hat geschrieben:Und lasse onresize weg.


habe kein onresize, ich meinte ich nen testprojekt nach geklickt nicht das testprojekt von baba genommen :)

alexander
Beiträge: 423
Registriert: Di 5. Feb 2008, 12:45
OS, Lazarus, FPC: Linux, Lazarus svn, FPC svn
CPU-Target: 64Bit
Kontaktdaten:

Beitrag von alexander »

hmmm du musst wir das problem am besten wie auch baba einfach per project zuschicken! Dann kann ich mich damit befassen....
alles andere ist mehr oder weniger rätselraten.....
Du magst Freiheit? Gönne es auch deinem Computer mit Linux!
www.alexanderroth.eu

baba
Beiträge: 265
Registriert: Mi 4. Apr 2007, 17:47

Beitrag von baba »

alexander hat geschrieben:Ok hier die Lösung: Es liegt nicht (jedenfalls nicht ganz an meiner Kompo):
Stelle als Anchors für die Kompo und auch den Button bottom,top,right ein.
Und lasse onresize weg.
Dann klappts.


Für das Beispiel stimmt es!

Bei meinem größeren Projekt, ist es leider unverändert. Der Butten springt nach wie vor nach links. Es liegt vielleicht daran, dass die anderen Komponenten mit Align:Left, Top, Bottom und Client arbeiten.

Ich danke Dir für die Hilfe, werde die Komponente aber wieder entfernen. Symtome zu bekämpfen bring auf Dauer nur Frust.

Baba.
Baba.

alexander
Beiträge: 423
Registriert: Di 5. Feb 2008, 12:45
OS, Lazarus, FPC: Linux, Lazarus svn, FPC svn
CPU-Target: 64Bit
Kontaktdaten:

Beitrag von alexander »

baba hat geschrieben:Bei meinem größeren Projekt, ist es leider unverändert. Der Butten springt nach wie vor nach links. Es liegt vielleicht daran, dass die anderen Komponenten mit Align:Left, Top, Bottom und Client arbeiten.

Ich danke Dir für die Hilfe, werde die Komponente aber wieder entfernen. Symtome zu bekämpfen bring auf Dauer nur Frust.

Also, ich gebe zu dass die Komponente in der Hinsicht nicht perfekt ist, jedoch funktioniert sie auch in solchen Fällen. Man muss nur den einen oder anderen Schalter umlegen.

Deswegen: gib nicht so schnell auf.

Ein paar allgemeine Tips:
- wenn du die Komponente manuell verschiebst musst du höllisch aufpassen! Besser mache es nicht, sondern regele es über anchors! Du kannst auch wenn du den button nach links setzt (und nach rechts einklappst) einfach align right setzten!
- probiere anchors aus
- wenn nichts hilft, öffne und schließe das panel per code.

Insgesamt kann ich aber leider nur ein Problem beheben, dass ich vor mir sehe, oder dass du mir ganz exact beschreibst.
Siehe Beispielprojekt.

Gruß Alexander
Du magst Freiheit? Gönne es auch deinem Computer mit Linux!
www.alexanderroth.eu

baba
Beiträge: 265
Registriert: Mi 4. Apr 2007, 17:47

Beitrag von baba »

Neue Erkenntniss.

Öffnen per Code.

Button klicken
- Der Button springt nach links (Flackern)

Der Button wird per Code wieder an den rechten Rand geschoben (Deshalb das Flackern)

Die falsche Button-Positionierung nach links muss bei jedem Step/Öffnen des Panels erfolgen. Hier ist der Fehler zu suchen.

Button erneut klicken
- Der Button bleibt nun am Rand, kein flackern

Fazit:

Es flackert beim ersten Klick auf den Button, danach ist alles OK! (Wurde ein Flag gesetzt?)

Da ist noch eine Klinke in der Komponente.

Baba.
Baba.

alexander
Beiträge: 423
Registriert: Di 5. Feb 2008, 12:45
OS, Lazarus, FPC: Linux, Lazarus svn, FPC svn
CPU-Target: 64Bit
Kontaktdaten:

Beitrag von alexander »

grübel grübel....

ich habe ein bisschen rumprobiert aber habe nie deinen Fehler....
wie gesagt ohne beispiel kann ich wenig dazu sagen....
kopiere doch dein projekt und lösche alles was nicht zur kompo gehört, wenn du dann das problem immer noch hast schicke mir dieses reduzierte projekt.

hast du die neuste Version? 1.05?
Du magst Freiheit? Gönne es auch deinem Computer mit Linux!
www.alexanderroth.eu

baba
Beiträge: 265
Registriert: Mi 4. Apr 2007, 17:47

Beitrag von baba »

Anbei das Testprojekt, ein wenig erweitert - Panel, Notbook-Tabs, Editor, Mainmenü.

... und prompt ist der Fehler wieder da!

Es liegt, wie oben schon von Dir erwähnt, am Form-Resize. Wenn ich dort die Korrektur des RollUp-Button rausnehme bleibt er stehen, füllt aber den rechten Rand unsauber aus.

FormCreate
1. MyRollOut1.Animated := False;
2. MyRollOut1.Collapsed := True;
3. MyRollOut1.Animated := True;

Kommentiere ich im Create Ereignis die Zeilen 1+3 aus, bleibt der Button auch am rechten Rand. Zieht das Panel aber langsam ein.

Da ist doch was faul!?

Arbeite ich mit Align:Right spinnt die Komponente komplett und der Button verschwindet ganz.

Vielleicht solltest Du einfach versuchen zum Standard konform zu werden und die Arbeit mit Align= zulassen. Komponente auf das Formular, Align=Right, Button=Right und der Drops ist gelutscht. (Dies kannst Du auch sofort nachvollziehen um die Fehler zu beseitigen. Neue Anwendung, Form1, MyRollup Komponente dauf, Align=Right, Button=Right, starten, Button ist weg!)

Baba.
Dateianhänge
Panel.zip
(474.94 KiB) 77-mal heruntergeladen
Baba.

EugenE
Beiträge: 440
Registriert: So 10. Dez 2006, 14:59
OS, Lazarus, FPC: MacOSX Lion 10.7 (L 0.9.31 FPC 2.7.1)
CPU-Target: 64Bit
Kontaktdaten:

Beitrag von EugenE »

So hier ne demo von meinem Bug

Starten solange das Panel nicht Collapsed ist kann man die Fenstergröße verrändern und das Panel wandert schön mit.

Ist das Panel Collapsed und man dann die Größe der Breite/Höhe verrändert , läuft deine Komponente weg ^^
Dateianhänge
ExpandPanelBug.rar
(2.56 KiB) 89-mal heruntergeladen

baba
Beiträge: 265
Registriert: Mi 4. Apr 2007, 17:47

Beitrag von baba »

... habe mal zum Testen Lazarus 9.25 installiert. Dabei ist mir folgendes aufgefallen:

Wird das Panel Collapsed, wird im unteren Teil des Panels, eine Horizontale Scrollbar angezeigt. Diese läßt sich auch nicht mit der entsprechenden Option abschalten.

Eine Scrollbar beim Einzug des Panels ist so Sinnvoll "wie ein Sandkasten in der Sahara!"

Baba.
Baba.

alexander
Beiträge: 423
Registriert: Di 5. Feb 2008, 12:45
OS, Lazarus, FPC: Linux, Lazarus svn, FPC svn
CPU-Target: 64Bit
Kontaktdaten:

Beitrag von alexander »

@baba: ahhh da scheint ein Fehler in animated zu sein.... muss ich schauen..
eine andere Lösung ist folgende:
Ändere create und resize folgendermaßen:

procedure TForm1.FormCreate(Sender: TObject);
begin
end;

procedure TForm1.FormShow(Sender: TObject);
begin
MyRollOut1.Collapsed := True;
end;

//------------------------------------------------------------------------------
procedure TForm1.FormResize(Sender: TObject);
begin
// MyRollOut1.Button.Left := (Form1.Width - MyRollOut1.Button.Width);
// MyRollOut1.Button.Top := (Panel3.Top);
// MyRollOut1.Button.Height := (Panel3.Height);


EDIT: hmm also ich würde dir raten: Lösche das rollout von deiner form und erstelle es nochmal neu... irgendwie sind da Einstellungen von einer älteren Version zurückgeblieben... Denn wenn ich die gleiche Situation nochmal neu baue, habe ich das Problem nicht mehr....


@EugenE: Ich schuae es mir noch an
Du magst Freiheit? Gönne es auch deinem Computer mit Linux!
www.alexanderroth.eu

alexander
Beiträge: 423
Registriert: Di 5. Feb 2008, 12:45
OS, Lazarus, FPC: Linux, Lazarus svn, FPC svn
CPU-Target: 64Bit
Kontaktdaten:

Beitrag von alexander »

EugenE hat geschrieben:So hier ne demo von meinem Bug

Starten solange das Panel nicht Collapsed ist kann man die Fenstergröße verrändern und das Panel wandert schön mit.

Ist das Panel Collapsed und man dann die Größe der Breite/Höhe verrändert , läuft deine Komponente weg ^^
du meinst wenn man in der Designtime das Panel schließt?
Ich habe rumprobiert und den Bug nicht hinbekommen...
Du magst Freiheit? Gönne es auch deinem Computer mit Linux!
www.alexanderroth.eu

EugenE
Beiträge: 440
Registriert: So 10. Dez 2006, 14:59
OS, Lazarus, FPC: MacOSX Lion 10.7 (L 0.9.31 FPC 2.7.1)
CPU-Target: 64Bit
Kontaktdaten:

Beitrag von EugenE »

nix in Designtime , in Runtime :)

soll ich nochn video machen ? :-D

baba
Beiträge: 265
Registriert: Mi 4. Apr 2007, 17:47

Beitrag von baba »

alexander hat geschrieben:EDIT: hmm also ich würde dir raten: Lösche das rollout von deiner form und erstelle es nochmal neu... irgendwie sind da Einstellungen von einer älteren Version zurückgeblieben...


Das war das erste was ich gemacht habe, leider ohne Erfolg.

Hattest Du folgendes probiert: Neue Anwendung, Form1 - MyRollout drauf, Button=Right, Align=Right - Button ist weg, nur das Panel ist sichtbar. Diesen Fehler musst Du doch sofort nachvollziehen können. Wenn das funktioniert ist doch alles andere wie z.B. Anchor unwichtig und Du sparst dir eine Menge Arbeit.

Baba.

PS. Das mit der Scrollbar tritt übrigens nicht auf wenn ich mit 9.24 kompiliere. (Gleicher Source, 9.25 Collapsed - Scrollbar erscheint, 9.24 Collapsed - kein Scrollbar)
Baba.

alexander
Beiträge: 423
Registriert: Di 5. Feb 2008, 12:45
OS, Lazarus, FPC: Linux, Lazarus svn, FPC svn
CPU-Target: 64Bit
Kontaktdaten:

Beitrag von alexander »

So neue Version:
- mit der scrollbar dürfte an autoscroll liegen --> behoben


Das mit dem Button verschwinden ist , dass seltsamerweise der buttonmanchmal nicht gezeichnet wird... gehe mit der Maus drüber und er ist wieder da...

Leider ist Scrollbox (es ist nämlich kein Panel) nicht ganz perfektioniert...
Doch wenn ihr wollt kann ich auch einfach ein panel nehmen. Ist nur ein Wort das ich ändern muss ;-)

@EugenE: hmm ich habe den fehler echt nicht..... sehr seltsam....
Du magst Freiheit? Gönne es auch deinem Computer mit Linux!
www.alexanderroth.eu

Antworten