![]() |
Objekt an Form ausrichten
Es gibt ja nette Sachen von wegen Alignment...
Aber bis auf alClient müssen alle passen, wenn man die Form resized. Ich will aber ein PageControl, dass die Höhe (Form1.Height div 2) hat. Wenn man das auf alBottom stellt und beim Resizen von Form1 die Höhe neu berechnet, wird das nichts (zb einfach mal maximieren und wieder zurück, dann ist schon wieder alles falsch) oder einfach ein wenig die Größe ändern. Nach ca. 5 Versuchen, ist bestimmt wieder ein Fehler drin... Was kann man da machen? |
Moin Nailor,
verwende doch mal für die Berechnung nicht (Form1.Height div 2), sondern ((Form1.ClientRect.Bottom-Form1.ClientRect.Top) div 2). |
Liste der Anhänge anzeigen (Anzahl: 1)
1 mal maximieren, 1 mal wiederherstellen, Ergebnis: Anhang
|
Moin Nailor,
ich hab's bei mir eben so ausprobiert und geht:
Delphi-Quellcode:
procedure TfrmMAIN.FormResize(Sender: TObject);
begin PageControl1.Height := (frmMAIN.ClientRect.Bottom - frmMAIN.ClientRect.Top) div 2; end; |
Du kannst mich ja für blöd erklären, aber wenn man das "div 2" weglässt oder dur "+ XYZ" ersetzt, sieht es wieder wie vorher aus.
Ich habe eine Form, ein PageControl(alBottom) darin PageControls, darin RichEdits(alClient)... |
Moin Nailor,
also ich hab' ein Formular genommen, da ein PageControl draufgelegt, zwei, drei Tabs erzeugt, das PageControl so bis ca. Mitte hochgezogen (vorher alBottom), dann in FormResize die genannte Zeile und gut. Und das funktioniert bei Dir nicht? :shock: |
nein, du klickst einmal auf das Icon neben X (Schliessen) dann nochmal.
Und dann sieht das, egal welche Zeile im Resize-Block steht, so aus wie in gezeigtem Bild. Manchmal auch, wenn man die Größe "normal" ändert Gibt es Prozeduren oder Properties, die mit Resize kollidieren könnten? |
Moin Nailor,
ich hab' das mehrere Male auf verschiedenen Wegen probiert, über Minimize/Maximize Button, DoppelClick auf die Caption und auch direktes Resize über den Rand. Keine Probleme. Kollisionen kann's eigentlich nur noch dann geben, wenn, Du an irgendeiner anderen Stelle noch Grössenänderungen vornimmst, oder in die Messages eingreifst (z.B. WndProc überschreiben). |
Die Messages sind in jungfräulichem Zustand, andere Größenänderugen. Ausschließen kann ichs nicht, aber mal deheim schauen...
|
Liste der Anhänge anzeigen (Anzahl: 1)
Source und .exe
Bei mir auf meinem Rechner (ich will das jetzt nicht verallgemeinern, tritt der beschriebene Effekt ein! *Witzbolde* kann man nicht bevor die komplette Datei hochgeladen wurde testen, ob die Erweiterung legal ist? und warum ist *.ace nicht erlaubt? Das ist imho die beste Art etwas zu packen! |
Moin Nailor,
war wohl schon etwas spät ;-) Die Unit und das Formular fehlen nämlich. Aber die EXE zeigt interessante Effekte. So etwas hab' ich auch noch nicht gesehen ;-) |
Nur so eine Idee:
Eingeschaft SCALED (des Formulars) und ANCHORS mal verändern, bzw. mal damit etwas experimentieren. Gruß, Helld; |
Liste der Anhänge anzeigen (Anzahl: 1)
Nochmal. Jetzt hoffentlich mit allem dabei...
|
Hi !
Hab's runtergeladen und wollte es ausfürhern ==>[Fataler Fehler] Unit1.pas(6): Datei nicht gefunden: 'Variants.dcu' Kenne ich nicht, wo kommt die her ? Gestest unter D5 Ent / Win98SE Ach ja, deine SCALED-Eigenschaft des Formulares ist auf true, setz die mal auf false (siehe oben). Vielleicht geht es dann ! Gruß, Helld; |
Variants? Ist das nicht bei D6 zumindest eine von den Standard-Units?
---- Scaled ändert nichts an der Sache... :cry: |
OK, ich schaue nachher mal unter D7 nach, da müsste es ja wohl auf alle Fälle gehen.
Gruß, Helld; |
Ja. In Delphi 5 und älter einfach den Verweis auf die Variants Unit aus der uses Klausel entfernen und schon gehts weiter.
|
Moin Nailor,
ich hab' mal mit Deinen Code experimentiert. Mal abgesehen davon, dass Du das div 2 vergessen hattest, also die Höhe immer des des Client Bereiches hätte entsprechen müssen, sollte das so funktionieren, und tut's nicht :shock: Ich hab' mal ein leeres Projekt genommen, dort dann ein Pagecontrol draufgelegt, die Unit1 einfach komplett durch Deine ersetzt (div 2 ergänzt, sonst kann es ja nicht funktionieren, und variants gelöscht, die wird eh' nicht gebraucht und D5 kennt die nicht), und dann die beiden Ereignisse zugewiesen. Anschliessend gespeichert, und Deine INI ins Projektverzeichnis gelegt. Alles funktioniert. Das scheint demnach an der dfm Datei zu liegen, oder irgendeiner Option, auch wenn ich mir nicht erklären könnte, welche das wohl sein sollte. |
Das div 2 hb ich nicht vergessen, in "echt" brauch ich nämlich was anderes, nur halt von der Größe von Form1 abgeleitet. Als Beispiel, um das Problem einzuengen, hab ich halt mal div 2 genommen.
Also: ich mach mal ein neues Projekt, kopiere meinen Quelltext da rein, und meld mich dann wieder. Danke schon mal. |
:kotz: :kotz: ICh hab das jetzt in einer neuen Anwendung eingefügt. Und was passiert. Im Prinzip das gleiche, nur das jetzt auch manchmal der Effekt eintritt, dass das Pagecontrol ganz verschwindet (nicht weil das Fenster zu klein ist - das kann ganz groß sein).
Schick mir mal deine kopilierte Version (mit der Versicherung, dass bei dir solche Effekte nicht da sind), ich teste die bei mir, und wenn wieder sowas passiert, dann schieb ich das auf meinen PC, und bin echt sauer. An sonsten liegts an meinem Delphi und ich bin auch echt sauer! :evil: :evil: |
Liste der Anhänge anzeigen (Anzahl: 1)
Moin Nailor,
ich hab's mal als Attachement angehängt, incl. Source. Wie schon gesagt, unter Verwendung Deines Original Codes der Unit1 (ohne DFM!) klappt es, mit Deiner DFM nicht. Was Du noch probieren könntest (ich weiss nicht ob D6 das schluckt, müsste aber eigentlich): Kopier Dein Projekt noch mal in einen neuen Ordner, und dann kopiere mal meine DFM Datei rein (dadurch müsste ja Deine überschrieben werden). Zur Sicherheit auch noch die Unit1.DCU löschen. Jetzt das Projekt öffnen und kompilieren. Wenn's dann geht, liegt's mit ziemlicher Sicherheit an der Formulardatei. Da Dein Programm, egal ob von Dir mit D6, oder von mir mit D5 kompiliert, bei mir immer den Fehler gezeigt hat, müsste meines bei Dir laufen. |
Deine exe könnte sein, dass sie richtig arbeitet, aber bei div 2 kann man schlecht sagen, ob es wirklich stimmt.
Die dfm-s sind gleich. Wenn ich den Quelltext, der bei dir noch dabei ist, kompiliere ist das Ergebnis aber auf jeden Fall falsch. PS: neue (eventuell sehr wichtige Info) mir ist grade aufgefallen, dass, wenn man nachdem der Fehler auftritt, die Seite manuell ändert, das PageControl seine Größe erneut ändert und alles so wird, wie es sein sollte. PPS:
Delphi-Quellcode:
von denen hilft keins.
Form1.Realign;
PageControl1.ActivePageIndex := Zahl; PageControl1.Refresh; PageControl1.Repaint; |
Moin Nailor,
probier doch mal das ganze Projekt von mir nochmals zu entpacken, zu laden, und einfach nochmal starten Die CFG und DOF unterscheiden sich nämlich. |
hab ich doch. Hab nur Zeug aus deinem ziparchiv genommen...
|
Moin Nailor,
also abgesehen von diesen Unterschieden in der CFG und DOF, konnte ich keine Feststellen. Das muss sich nochmal jemand mit D6 ansehen. Da weiss ich jetzt leider auch nicht mehr weiter. |
Neue Frage an alle:
Welche procedures werden beim Wechseln des TabSheets in einem PageControl durchlaufen? |
Hi!
Ich habe nochmal mit dem Programm rumgespielt. Ergebnis: Das ganze führt nur zu falschen Ergebnissen, wenn man die Fensterhöhe verkleinert. Dann wird das PageControl soweit nach unten verschoben, wie man das Fenster grade verkleinert hat. d.h. ich kann mir vorstellen, dass er einfach noch das "alte" Fenster nimmt, daran ausrichtet, und dann die Fenstergröße ändert. Dadurch erklärt sich auch, warum bei PAgeControl das untere Ende fehlt. Es ist dann ja, dort wo vorher das Fenster aufgehört hat. Dagegen spricht, dass, wenn man das Fenster größer macht, das PageControl nicht einfach irgendwo in der Luft anfängt, da wo vorher das Fenster zu Ende war. HILFE!!! :roteyes: PS: weiter Versuche: Das gleiche Problem tritt analog bei alRight auf, nicht aber bei alTop, alBottom, alClient. Ich krieg gleich nen Rappel! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:34 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz