Autor Beitrag
GerhardS
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 49



BeitragVerfasst: Do 13.03.14 00:35 
Ich habe folgenden Code:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
  ShowMessage(PageControl1.Pages[PageIndex].Caption); //String1 = 'tsStart'
  PageControl1.Pages[PageIndex].Tag := Integer(CloseButton); //40687968
  PageControl1.Pages[PageIndex].Caption := StringReplace(PageControl1.Pages[PageIndex].Caption, '&''&&', [rfReplaceAll]);
  //Notlösung
  PageControl1.Pages[PageIndex].Caption := PChar(PageControl1.Pages[PageIndex].Caption) + BlankSpace;
  ShowMessage(PageControl1.Pages[PageIndex].Caption); //String2 = 'Müller && Söhne'
  Rect := PageControl1.TabRect(PageIndex);
  CloseButton.Top := Rect.Top + 2;
  CloseButton.Left := Rect.Right - 19;

Wie man sieht, ändert sich PageControl1.Pages[PageIndex].Caption während der Abarbeitung grundsätzlich (von 'tsStart' zu 'Müller && Söhne'). Das lässt sich noch verschmerzen, weil der Anwender 'tsStart' nicht sieht. Gleichzeitig tritt ein Seiteneffekt ein: nur wenn ShowMessage aufgerufen wird, wird auch die Beschriftung von PageControl1.Pages[PageIndex] so geändert, dass das Rechteck in den letzten drei Code-Zeilen richtig gezeichnet wird.
Meine Frage: lässt sich dieser Effekt auch ohne ShowMessage erzielen?
Es ist übrigens egal, was gemeldet wird, 'Aha' tut's auch. Application.ProcessMessages tut's nicht.

Moderiert von user profile iconNarses: Code- durch Delphi-Tags ersetzt
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19312
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Do 13.03.14 07:55 
Ich glaube ohne ein kleines Demoprojekt wird dir da kaum jemand helfen können. :nixweiss:

Ich weiß, dass es bei einem PageControl mit dem Zeichnen ein paar Probleme gab und mindestens eins auch noch in XE5 drin ist.

Als Alternative könntest du versuchen dir selbst eine Windows Message zu schicken und den Rest dort zu machen statt den Rest direkt abzuarbeiten.
GerhardS Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 49



BeitragVerfasst: Do 13.03.14 16:22 
Anbei mein Demoprojekt. Aktuell kommt es nur darauf an, dass
a) die im Code eingetragene Webseite aufgerufen und darstellt wird
b) der CloseButton an der richtigen Stelle steht.
Bekannte Fehler:
1. Das Google-Eingabefeld ist gegen den Buchstaben s allergisch. Fehlermeldung: "Komponente mit der Bezeichnung WBFrame existiert bereits"
2. Der CloseButton reagiert nicht auf Änderung in TitleChange - wird nächster Arbeitsschritt.

Besten Dank für die Hilfe im Voraus.
Einloggen, um Attachments anzusehen!
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19312
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Do 13.03.14 16:31 
Wenn ich das so sehe frage ich mich (unabhängig von dem konkreten Problem, da kann ich erst heute Abend schauen) als erstes warum die dir diese Mühe machst...
Da sieht die fertige Implementierung, die wie bei Chrome aussieht, doch viel besser aus als man es selbst so schnell hinbekommt. Schon gar nicht auf Basis eines TPageControl...
code.google.com/p/delphi-chrome-tabs/

// EDIT:
Da fehlt das Neupositionieren des Buttons in TitleChange.
GerhardS Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 49



BeitragVerfasst: Fr 14.03.14 01:57 
Der Hinweis auf die notwendige Neupositionierung des CloseButtons in TitleChange war gut. Danke. Ich hab den Code entsprechend geändert, siehe Anhang.
Leider ist der alte Fehler - das Google-Eingabefeld reagiert auf das 's' allergisch - noch immer vorhanden, obwohl ich schon die procedure InitBrowser geändert habe (das Navigieren ist jetzt nicht mehr Teil der procedure, zum Navigieren muss man jetzt entweder auf das Plustab oder den gobutton klicken).
=====
Am Beispiel der Chrome-Tabs kann man lernen, wie man mit Kanonen (mehrere Tausend Zeilen Quellcode für die Demo) auf Spatzen schießt. Um PageControls (fünf in der Demo) kommen die ChromeTabs auch nicht herum. Für eine professionelle Software mag das angehen; mein Ziel ist bescheidener: das Speichern einer Webadresse durch DAUs, die mit Begriffen wie "Eingabefeld" oder "Adressleiste" nichts anfangen können. Leider bieten weder MSIE noch Firefox eine Möglichkeit, die aktuelle Webadresse in die Zwischenablage zu kopieren - markieren und kopieren ist für DAUs viel zu kompliziert.
Einloggen, um Attachments anzusehen!
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19312
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Fr 14.03.14 07:41 
user profile iconGerhardS hat folgendes geschrieben Zum zitierten Posting springen:
Leider bieten weder MSIE noch Firefox eine Möglichkeit, die aktuelle Webadresse in die Zwischenablage zu kopieren - markieren und kopieren ist für DAUs viel zu kompliziert.
Ok :gruebel:

Aber es gibt dafür ja auch genug Addons wie dieses, außerdem lässt sich das leicht selber erstellen:
www.winhelponline.co...r-internet-explorer/
Dann hat man im Browser einfach einen Button dafür.
GerhardS Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 49



BeitragVerfasst: Fr 14.03.14 14:48 
Das kannte ich noch nicht. Danke.