AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

PageControl Canvas kopieren

Ein Thema von G-Baumstamm · begonnen am 12. Feb 2011 · letzter Beitrag vom 16. Feb 2011
Antwort Antwort
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.358 Beiträge
 
Delphi 11 Alexandria
 
#1

AW: PageControl Canvas kopieren

  Alt 14. Feb 2011, 14:20
Mal als Überlegung:
Du könntest Deine Komponenten für jede Seite auf eignen Formularen definieren und diese zur Laufzeit dynamisch einblenden (statt einem PageControl z.B. auch in einem TabControl).
Den Formularinhalt kannst Du dann evtl. leicher drucken?
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
G-Baumstamm

Registriert seit: 9. Jan 2010
63 Beiträge
 
Delphi 7 Enterprise
 
#2

AW: PageControl Canvas kopieren

  Alt 15. Feb 2011, 16:49
Guter Vorschlag ... hatte ich mir vorher auch schon überlegt, aber wegen "zu umständlich" wieder verworfen.

Werde mich da wohl aber nochmal dran setzten (müssen), falls ich das vernünftig implementiert kriegen sollte würde das Drucken nämlich tatsächlich vernünftig gehen ...
Daniel NR
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.358 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: PageControl Canvas kopieren

  Alt 15. Feb 2011, 18:03
Sooo schwierig ist es eigentlich nicht.

So binde ich 3 Formulare in TabSheets ein:
Delphi-Quellcode:
    FormGeneral.ManualDock(TabSheetGeneral, nil, alNone);
    FormGeneral.Align := alClient;
    FormGeneral.Show;

    FormCompetitors.ManualDock(TabSheetCompetitors, nil, alNone);
    FormCompetitors.Align := alClient;
    FormCompetitors.Show;

    FormPlan.ManualDock(TabSheetTournamentPlan, nil, alNone);
    FormPlan.Align := alClient;
    FormPlan.Show;

So zeige ich existierende Formulare dynamisch in einem TabControl an (wobei das TodFormCtrl eine eigene Komponente ist, die das Formular ggf. "steuert"):
Delphi-Quellcode:
procedure TFormSetting.odTabControlTournamentsSettingShowRegister(Sender: TObject);

  procedure ShowForm(F: TForm);

    procedure DoShowForm(SF, F: TForm; FC: TodFormCtrl);
    begin
      if SF = F then
      begin
        SF.ManualDock(odTabControlTournamentsSetting, nil, alNone);
        SF.Align := alClient;
        SF.Show;
        FC.od := odTabControlTournamentsSetting.ActiveOd;
        if Assigned(SF.OnShow) then
          SF.OnShow(Self);
      end
      else
      begin
        FC.od := nil;
        SF.Close;
      end;
    end;

  begin
    MemberTournament := odTabControlTournamentsSetting.ActiveOd as TodTournament;
    DoShowForm(FormSettingMelee, F, FormSettingMelee.odFormCtrl);
    DoShowForm(FormSettingSwiss, F, FormSettingSwiss.odFormCtrl);
    DoShowForm(FormSettingGroup, F, FormSettingGroup.odFormCtrl);
    DoShowForm(FormSettingKo, F, FormSettingKo.odFormCtrl);
  end;

begin
  if odTournament = nil then
    ShowForm(nil)
  else if odTournament.Data_Is_Melee then
  begin
    FormSettingMelee.odMelee := odTournament.Melee;
    ShowForm(FormSettingMelee);
  end
  else if odTournament.Data_Is_Swiss then
  begin
    ShowForm(FormSettingSwiss);
  end
  else if odTournament.Data_Is_Group then
  begin
    ShowForm(FormSettingGroup);
  end
  else if odTournament.Data_Is_Ko then
  begin
    ShowForm(FormSettingKo);
  end
  else
    ShowForm(nil);
end;
Vielleicht hilft Dir das ja als Anregung...
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
G-Baumstamm

Registriert seit: 9. Jan 2010
63 Beiträge
 
Delphi 7 Enterprise
 
#4

AW: PageControl Canvas kopieren

  Alt 15. Feb 2011, 19:28
Soviel zum "zu kompliziert". Der 2te Teil erschließt sich mir tatsächlich nicht ganz, aber der erste Teil passt eh besser zu dem was ich brauche, ist extrem simpel und funktioniert super. Danke!

Wenn man weiß wies geht, geht alles viel einfacher
Daniel NR
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.358 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: PageControl Canvas kopieren

  Alt 15. Feb 2011, 19:34
Freut mich

Zum zweiten Teil noch eine kurze Erklärung:
Je nach Bedingung A, B, C wird FormA, FormB oder FormC eingedockt und angezeigt und alle anderen Formulare geschlossen.
Der Rest (alle od..Controls) initialisiert nur ein paar Daten.
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
G-Baumstamm

Registriert seit: 9. Jan 2010
63 Beiträge
 
Delphi 7 Enterprise
 
#6

AW: PageControl Canvas kopieren

  Alt 16. Feb 2011, 15:04
Okay, jetzt hab ich den 2ten Teil auch verstanden Btw, deine verwendeten Namen sind ne 1 ... (ich sag nur TFormSetting.odTabControlTournamentsSettingShowReg ister) ^^

Eine letzte Frage hab ich noch: Ich hab das ganze jetzt mit der Fade-Problematik die ich in dem anderen Thread hatte kombiniert, und an einer Stelle macht mich Delphi noch wahnsinnig: Um nach dem Tabwechsel der PageControl die Form einzufaden hab ich sie kurz undockt, eingeblendet und will sie jetzt wieder docken. Da sie aber auch in nicht-angedocktem Zustand genau an der gleichen Stelle liegt sollte der Vorgang des Ent-Dockens und Wieder-Andockens für den Benutzer nicht sichtbar sein. Also quasi Undock --> Tabwechsel --> Einfaden --> Docken.

Nach dem Docken zeichnet er die Form allerdings jedes mal wieder neu (macht ja auch Sinn, er kann ja nicht wissen, das diese vorher und nachher genau die gleiche Position hat und das Repaint somit unnötig ist). Und da das nen bisschen dauert, siehts relativ kacke aus ... Leider ist es ihm auch egal, wenn ich vorher mit
Delphi-Quellcode:
SendMessage(PForm.Handle, WM_SETREDRAW, 0, 0);
SendMessage(EinstForm.Handle, WM_SETREDRAW, 0, 0);
EinstForm.ManualDock(PForm.EinstellungenSheet,nil,alNone);
versuche das Zeichnen zu verhindern. Je nach dem ob ich das Zeichnen auf beiden Forms blockiere, oder nur auf einer, zeichnet er entweder die entsprechende, grade angedockte Form oder sogar die ganze Anwendung (!) neu. Habs auch schon mit LockWindowUpdate oder Canvas.Lock probiert, aber er malt munter weiter ...

So ... ich hoffe das ist nun die engültig letzte Frage zu diesem Thema mit der ich euch nerven muss
Daniel NR
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.358 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: PageControl Canvas kopieren

  Alt 16. Feb 2011, 15:26
Btw, deine verwendeten Namen sind ne 1 ... (ich sag nur TFormSetting.odTabControlTournamentsSettingShowReg ister) ^^
Das ist reine Prosa

Die Idee mit dem Aus-Fade-Eindocken ist nicht schlecht. Wenn Du eine Flackerlösung findest, dann schreib mal...
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:56 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