Autor Beitrag
Peter18
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 489
Erhaltene Danke: 2


Delphi4
BeitragVerfasst: Mo 01.02.16 17:04 
Ein freundliches Hallo an alle,

ich habe einen seltsamen Effekt, den ich mir bisher noch nicht erklären kann. Vielleicht ist die Lösung ja ganz einfach, aber im Moment stehen zu viele Bäume im Weg, so dass ich den Wald nicht sehen kann.

Ich habe eine Reihe von Karteikarten (TTabSheet) auf der Oberfläche. Auf einer Karteikarte werden Daten ausgewählt. Dann werden ein Panel und einige Anzeigeelemente (Combobox, Edit u.s.w.) erstellt. Parent ist das Panel. Parent des Panel ist eine andere Karteikarte, die noch nicht angezeigt wird. Wechsele ich nun auf die Karteikarte, so ist sie leer. Wechsele ich jedoch vor dem Erstellen der Anzeige auf diese Karte (PageControl.ActivePage), sind die Anzeigen sichtbar.

Das Panel soll es ermöglichen, dass ich mehrere dieser Panels erstellen kann und nur das, dass gerade gezeigt werden soll samt Datenanzeigen mit einer Anweisung sichtbar schalten kann. Ich hoffe Jemand hat einen Tipp, was hier fehlt oder falsch gelaufen ist.

Grüße von der regnerischen Nordsee

Peter
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19272
Erhaltene Danke: 1740

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mo 01.02.16 19:46 
TTabSheet und TPageControl sind eigentlich nicht beide nötig...
Ich verstehe gerade nicht wie du die kombinieren möchtest.

Normalerweise packst du die Komponenten einfach auf eine Seite des PageControls und du kannst umschalten usw. ohne die Komponenten dynamisch erzeugen zu müssen.

Ein TTabSheet hingegen erfordert es, dass du dich selber darum kümmerst die Inhalte der jeweiligen Seiten anzuzeigen und auszublenden. Das ist ein Relikt aus Windows 3.x.

// EDIT:
Oh, ich habe TTabSheet verwechselt mit dem alten Tab-Control. :oops:


Zuletzt bearbeitet von jaenicke am Di 02.02.16 12:12, insgesamt 1-mal bearbeitet
Peter18 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 489
Erhaltene Danke: 2


Delphi4
BeitragVerfasst: Di 02.02.16 11:15 
Hallo jaenicke,

Dank Dir für Deine Antwort, doch ich verstehe sie nicht ganz.

In der Hilfe steht:
Zitat:
Mit TPageControl lassen sich mehrseitige Dialogfelder mit Registern erzeugen. Die überlappenden Seiten, die TPageControl am Bildschirm darstellt, sind Objekte der Klasse TTabSheet. Eine bestimmte Seite (Registerkarte) wird durch Klicken auf das sogenannte Register (das dem Reiter auf einer Karteikarte ähnelt) am oberen Rand des Steuerelements ausgewählt.

Die Panels sollen dazu dienen, Anzeigen umzuschalten. Damit kann ich dann auf einer Karteikarte unterschiedliche Kombinationen anzeigen. Das hat in einem Testprogramm auch gut funktioniert. Hier erscheinen die Anzeigeelemente aber wenn die Karteikarte sichtbar ist, aber nicht, wenn eine andere beim Erstellen gezeigt wird.

Grüße von der Nordsee

Peter
jasocul
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 6386
Erhaltene Danke: 146

Windows 7 + Windows 10
Sydney Prof + CE
BeitragVerfasst: Di 02.02.16 11:47 
Ich habe mir gerade einen Test gebastelt und da funktioniert es problemlos.

Vielleicht solltest du mal etwas Source zeigen.
Interessant wäre der Bereich, wo du die Komponenten erstellst und der Bereich, wo die die Daten umschaltest.
Peter18 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 489
Erhaltene Danke: 2


Delphi4
BeitragVerfasst: Di 02.02.16 12:27 
Hallo jasocul,

auch Dir Dank für Deine Antwort. Ich dachte ich habe etwas prinzipielles übersehen, aber Deine Antwort nährt einen Verdacht. Seit einiger Zeit macht der Compiler merkwürdige Dinge. So wird nach einer Änderung bein Testen eine Unit ein zweites mal aufgemacht und gefragt ob die Unit wegen Änderungen neu geladen werden soll. Tatsächlich ist die Änderung dann auch nur in einem Fenster vorhanden. Manchmal werden Änderungen nicht kompiliert (was sich im Assembler finden läßt). Das Grafiktablett spinnt (Cursor springt hin und her) und die Maus fängt jetzt auch an.

Ich befürchte an der Hardware ist etwas faul. Werd mal ein paar Komponenten tauschen. Mal sehen, was das Lager so hergibt.

Quelltext habe ich bisher nicht gezeigt, weil sich das Ganze über sehr viele Routinen erstreckt. Da Du bestätigst, dass es so gehen sollte. werde ich erst mal meine Hardware prüfen und dann noch mal die Software. Vielleicht ist es damit ja behoben. Werde Berichten, was die ghost buster in meinem Rechner finden.

Grüße von der heute trockenen Nordsee

Peter
jasocul
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 6386
Erhaltene Danke: 146

Windows 7 + Windows 10
Sydney Prof + CE
BeitragVerfasst: Di 02.02.16 12:35 
user profile iconPeter18 hat folgendes geschrieben Zum zitierten Posting springen:
Seit einiger Zeit macht der Compiler merkwürdige Dinge. So wird nach einer Änderung bein Testen eine Unit ein zweites mal aufgemacht und gefragt ob die Unit wegen Änderungen neu geladen werden soll. Tatsächlich ist die Änderung dann auch nur in einem Fenster vorhanden. Manchmal werden Änderungen nicht kompiliert (was sich im Assembler finden läßt).

Klingt ein bisschen so, als wäre das Projekt mehrfach vorhanden und der Compiler greift manchmal auf die falschen Units zu. Das solltest du vielleicht auch mal prüfen und dafür sorgen, dass das Projekt wirklich nur einmal verfügbar ist, falls meine Vermutung stimmt.
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19272
Erhaltene Danke: 1740

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Di 02.02.16 13:17 
Unter Delphi 4 kann man leider nicht so ohne Weiteres sehen wo die Unit liegt glaube ich. Du kannst aber auf den beiden offenen Units einmal Datei --> Speichern unter... benutzen und schauen, ob das bei beiden das richtige Verzeichnis ist.

Und du kannst auf dem PC einmal suchen, ob die Unit nur einmal vorhanden ist.
Peter18 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 489
Erhaltene Danke: 2


Delphi4
BeitragVerfasst: Di 02.02.16 18:23 
Hallo jasocul, hallo jaenicke,

Dank Euch nochmals. Ich habe einen Projektordner angelegt und dort Ordner für Quellen, Objekt- und Exe-Dateien erstellt. Die Pfade zu den Quellen finde ich auch in der Projekt-Datei (.DPR). Da auch verschiedene Hardwarekomponenten spinnen, gehe ich davon aus, dass dort etwas faul ist. Nach Beratung mit meinem Haus- und Hoflieferanten ist die Vermutung, dass das Netzteil eine Macke hat. Zumal auch eine Festplatte nur nach Lust und Laune angezeigt wird. Wenn die Hardware in Ordnung ist, werde ich alle Objekt-Dateien löschen und das Projekt neu übersetzen. Dann wird sich hoffentlich zeigen, wo der Hund begraben ist.

Grüße von der noch immer trockenen Nordsee

Peter