Hallo!
Ich bin im Moment dabei eine Wizardkomponente zu programmieren. Zur Laufzeit arbeitet die Komponente bisher auch einwandfrei. Leider ist die Navigation aber zur Entwicklungszeit noch umständlich. Gibt es vielleicht auch irgendwie die Möglichkeit, zur Entwicklungszeit unter Delphi, durch einen Klick auf einen Button die aktuelle Seite einer Notebook Komponente ändern.
Viele Dank im Voraus!
Martin Winandy
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80: 81: 82: 83: 84: 85: 86: 87: 88: 89: 90: 91: 92: 93: 94: 95: 96: 97: 98: 99: 100: 101: 102: 103: 104: 105: 106: 107: 108: 109: 110: 111: 112: 113: 114: 115: 116: 117: 118: 119: 120: 121: 122: 123: 124: 125: 126: 127: 128: 129: 130: 131: 132: 133: 134: 135: 136: 137: 138: 139: 140: 141: 142: 143: 144: 145: 146: 147: 148: 149: 150: 151: 152: 153: 154: 155: 156: 157: 158: 159: 160: 161: 162: 163: 164: 165: 166: 167: 168: 169: 170: 171: 172: 173: 174: 175: 176: 177: 178: 179: 180: 181: 182: 183: 184: 185: 186: 187: 188: 189: 190: 191: 192: 193: 194: 195: 196: 197: 198: 199: 200: 201: 202: 203: 204: 205: 206: 207: 208: 209: 210: 211: 212: 213: 214: 215: 216: 217: 218: 219: 220:
| unit Wizard;
interface
uses Windows, Classes, ExtCtrls, StdCtrls;
type TOnPageChanged = procedure(Sender: TObject; var NewPage: Integer) of object; TWizard = class(TComponent) private FPages: tNoteBook; FTextNext, FTextBack, FTextCancel, FTextFinish: String; FNextButton, FBackButton, FCloseButton: TButton; FOnNext, FOnBack: tOnPageChanged; FOnFinish, FOnCancel: tNotifyEvent; protected procedure GoNext(Sender: TObject); procedure GoBack(Sender: TObject); Procedure GoClose(Sender: TObject); public constructor Create(AOwner: TComponent); override; procedure SetPages(Value: TNoteBook); procedure SetTextNext(Value: String); procedure SetTextBack(Value: String); procedure SetTextCancel(Value: String); procedure SetTextFinish(Value: String); procedure SetNextButton(Value: TButton); procedure SetBackButton(Value: TButton); procedure SetCloseButton(Value: TButton); procedure ChangeButtons; published property Pages: TNoteBook read FPages write SetPages; property TextNext: String read FTextNext write SetTextNext; property TextBack: String read FTextBack write SetTextBack; property TextCancel: String read FTextCancel write SetTextCancel; property TextFinish: String read FTextFinish write SetTextFinish; property NextButton: TButton read FNextButton write SetNextButton; property BackButton: TButton read FBackButton write SetBackButton; property CloseButton: TButton read FCloseButton write SetCloseButton;
property OnNext: TOnPageChanged read FOnNext write FOnNext; property OnBack: TOnPageChanged read FOnBack write FOnBack; property OnCancel: TNotifyEvent read FOnCancel write FOnCancel; property OnFinish: TNotifyEvent read FOnFinish write FOnFinish; end;
procedure Register;
implementation
Constructor TWizard.Create(AOwner: TComponent); begin
inherited;
FTextNext := '&Next >'; FTextBack := '< &Back'; FTextCancel := '&Cancel'; FTextFinish := '&Finish';
ChangeButtons;
end;
procedure TWizard.GoNext(Sender: TObject); var NewPage: Integer; begin
NewPage := 0; if Assigned(FPages) then begin NewPage := FPages.PageIndex; if FPages.PageIndex < FPages.Pages.Count then Inc(NewPage); end;
if Assigned(FOnNext) then FOnNext(self,NewPage);
if Assigned(FPages) then begin if NewPage in [0..FPages.Pages.Count-1] then FPages.PageIndex := NewPage; end;
ChangeButtons;
end;
procedure TWizard.GoBack(Sender: TObject); var NewPage: Integer; begin
NewPage := 0; if Assigned(FPages) then begin NewPage := FPages.PageIndex; if FPages.PageIndex > 0 then Dec(NewPage); end;
if Assigned(FOnBack) then FOnBack(self,NewPage);
if Assigned(FPages) then begin if NewPage in [0..FPages.Pages.Count-1] then FPages.PageIndex := NewPage; end;
ChangeButtons;
end;
procedure TWizard.GoClose(Sender: TObject); begin
if Assigned(FPages) then begin if FPages.Pages.Count-1 = FPages.PageIndex then FOnFinish(Self) else FOnCancel(Self); end else FOnCancel(Self); End;
procedure TWizard.ChangeButtons; begin
FNextButton.Caption := FTextNext; FBackButton.Caption := FTextBack; if Assigned(FPages) then begin if FPages.Pages.Count-1 = FPages.PageIndex then FCloseButton.Caption := FTextFinish else FCloseButton.Caption := FTextCancel; end else FCloseButton.Caption := FTextCancel;
end;
procedure TWizard.SetPages(Value: TNoteBook); begin
FPages := Value; ChangeButtons;
end;
procedure TWizard.SetNextButton(Value: TButton); begin
FNextButton := Value; if Assigned(FNextButton) then FNextButton.OnClick := GoNext; ChangeButtons;
end;
procedure TWizard.SetBackButton(Value: TButton); begin
FBackButton := Value; if Assigned(FBackButton) then FBackButton.OnClick := GoBack; ChangeButtons;
end;
procedure TWizard.SetCloseButton(Value: TButton); begin
FCloseButton := Value; if Assigned(FCloseButton) then FCloseButton.OnClick := GoClose; ChangeButtons;
end;
procedure TWizard.SetTextNext(Value: string); begin
FTextNext := Value; ChangeButtons;
end;
procedure TWizard.SetTextBack(Value: string); begin
FTextBack := Value; ChangeButtons;
end;
procedure TWizard.SetTextCancel(Value: string); begin
FTextCancel := Value; ChangeButtons;
end;
procedure TWizard.SetTextFinish(Value: string); begin
FTextFinish := Value; ChangeButtons;
end;
procedure Register; begin RegisterComponents('Beispiele', [TWizard]); end;
end. |