Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   tabsheet deaktivieren (https://www.delphipraxis.net/150581-tabsheet-deaktivieren.html)

uligerhardt 22. Apr 2010 13:54

Re: tabsheet deaktivieren
 
Schau doch mal, ob das Programm bei dir in TPBPageControl.DrawTab ankommt. Vielleicht ist TCustomTabControl.DrawTab in Lazarus nicht als virtuell deklariert?

khh 22. Apr 2010 14:10

Re: tabsheet deaktivieren
 
Zitat:

Zitat von uligerhardt
Schau doch mal, ob das Programm bei dir in TPBPageControl.DrawTab ankommt. Vielleicht ist TCustomTabControl.DrawTab in Lazarus nicht als virtuell deklariert?

mh wenn ich ins

TPBPageControl.Create reinsteppe komme ich in die Tpagecontrol :-(

die PBPagecontrol sieht nach dem Einbinden in die IDE so aus:



Delphi-Quellcode:
unit PBPageControl;

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils, LResources, Forms, Controls, Graphics, Dialogs, ComCtrls;

type
  TPBPageControl = class(TPageControl)
  private
    { Private declarations }
  protected
    { Protected declarations }
  public
    { Public declarations }
  published
    { Published declarations }
  end;

procedure Register;

implementation

procedure Register;
begin
  RegisterComponents('Common Controls',[TPBPageControl]);
end;

end.
was macht Lazarus da?

uligerhardt 22. Apr 2010 14:16

Re: tabsheet deaktivieren
 
Zitat:

Zitat von khh
Zitat:

Zitat von uligerhardt
Schau doch mal, ob das Programm bei dir in TPBPageControl.DrawTab ankommt. Vielleicht ist TCustomTabControl.DrawTab in Lazarus nicht als virtuell deklariert?

mh wenn ich ins

TPBPageControl.Create reinsteppe komme ich in die Tpagecontrol :-(

die PBPagecontrol sieht nach dem Einbinden in die IDE so aus:



Delphi-Quellcode:
unit PBPageControl;

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils, LResources, Forms, Controls, Graphics, Dialogs, ComCtrls;

type
  TPBPageControl = class(TPageControl)
  private
    { Private declarations }
  protected
    { Protected declarations }
  public
    { Public declarations }
  published
    { Published declarations }
  end;

procedure Register;

implementation

procedure Register;
begin
  RegisterComponents('Common Controls',[TPBPageControl]);
end;

end.
was macht Lazarus da?

Na du bist ein Scherzkeks. :P
Du nimmst den ganzen Quellcode aus der Unit raus und wunderst dich, wenn Funktionalität verloren geht? :wall:
Probier mal, den Originalcode aus dem Posting, das du eingangs verlinkt hast, zu nehmen, zu speichern und zu compilieren. Geht das mit Lazarus? (Den hier:
Delphi-Quellcode:
{$mode objfpc}{$H+}
darfst du von mir aus noch einfügen.)

khh 22. Apr 2010 14:20

Re: tabsheet deaktivieren
 
eben nicht :-(

ich hab den Code nicht rausgenommen,
das hat Lazarus fabriziert.

weiss der Teufel warum.

ich habs sogar schon 2mal installiert und jedesmal ist danach der Code raus

uligerhardt 22. Apr 2010 14:30

Re: tabsheet deaktivieren
 
Zitat:

Zitat von khh
eben nicht :-(

ich hab den Code nicht rausgenommen,
das hat Lazarus fabriziert.

weiss der Teufel warum.

ich habs sogar schon 2mal installiert und jedesmal ist danach der Code raus

Probier mal, Schritt für Schritt nachzuvollziehen, was ich hier gemacht habe. Achte darauf, eine lokale Kopie von PCPageControl.pas im Projektverzeichnis zu erstellen und zu verwenden. Funzt das?

khh 22. Apr 2010 14:43

Re: tabsheet deaktivieren
 
alsooo
ich hab die Installation in der IDE rückgängig gemacht und nur die lokale Kopie im Projektverzeichnis gespeichert und verwendet.

Beim Kompilieren bekomme ich schon bei der Deklaration der Procedure :
Delphi-Quellcode:
   Procedure CMDialogKey( Var msg: TWMKey ); message CM_DIALOGKEY;
den Fehler:
PBPageControl.pas(69,66) Error: Identifier not found "CM_DIALOGKEY"



in der messages.inc gibts den auch nicht :-(

EDIT:
ersetze ich die message Constante mit igrendwas anderem ( nur um weiter zu kommen) kommt die nächste Fehlermeldung bei:

procedure DrawTab(TabIndex: Integer; const Rect: TRect; Active: Boolean); override;

PBPageControl.pas(75,22) Error: Duplicate identifier "TabIndex"

:-(

DeddyH 22. Apr 2010 14:46

Re: tabsheet deaktivieren
 
Unter Delphi steht der in der Controls.pas. Versuch es einfach mal damit.

khh 22. Apr 2010 14:51

Re: tabsheet deaktivieren
 
Zitat:

Zitat von DeddyH
Unter Delphi steht der in der Controls.pas. Versuch es einfach mal damit.

leider nicht, die ist auch standardmässig schon eingebunden gewesen.

uligerhardt 22. Apr 2010 16:00

Re: tabsheet deaktivieren
 
Zitat:

Zitat von khh
procedure DrawTab(TabIndex: Integer; const Rect: TRect; Active: Boolean); override;

PBPageControl.pas(75,22) Error: Duplicate identifier "TabIndex"
:-(

Benenn die Parameter mal um: ATabIndex, ARect, AActive. Dann kommst du bestimmt zum nächsten Fehler. :P

taaktaak 22. Apr 2010 19:37

Re: tabsheet deaktivieren
 
Moin, Moin.
Habe mit den Code des Grossmeisters mal angesehen - offenbar wird auch im Coder-Himmel nur mit Wasser gekocht: Die vorgestellte Loesung ist grundsaetzlich natuerlich viel eleganter als im OnChanging() den Wechsel zu verhindern, aber so ganz ueberzeugen kann sie denn doch nicht. Ein wenig Feinarbeit sollte man noch hineinstecken:
  • Die Darstellung der aktiven Seite in bsBold ist nicht wirklich praktikabel. Je mehr Buchstaben die Caption hat, desto deutlicher ist zu erkennen, dass die Tab-Breite fuer die Fett-Schrift vergroessert werden muesste. Also vielleicht doch lieber eine andere Schriftfarbe verwenden?
  • Die deaktivierte Page mit grauer Schrift darstellen? Na, eigentlich bietet sich hier die Ausgabe mit DrawState() unter Verwendung von DSS_DISABLED an!
  • Der Sinn oder die Aufgabe von CMDialogKey() erschliesst sich mir ueberhaupt nicht :-( Wozu ist die Methode gut?
  • Dafuer kann ueber die "normalen" Tasten CursorLeft, CursorRight, Pos1 etc. leider doch eine deaktivierte Seite aktiviert werden. Derzeit wird nur die Auswahl mittels Maus abgefangen - die Tastensteuerung muss aber ebenfalls kontrolliert und ggf. korrigiert werden.


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:03 Uhr.
Seite 2 von 3     12 3      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz