AGB  ·  Datenschutz  ·  Impressum  







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

Eingabebox mit Beschriftung

Ein Thema von Berni68 · begonnen am 17. Jan 2006 · letzter Beitrag vom 21. Jan 2006
Antwort Antwort
Berni68

Registriert seit: 9. Jan 2006
Ort: Villingen
162 Beiträge
 
Delphi XE5 Professional
 
#1

Eingabebox mit Beschriftung

  Alt 17. Jan 2006, 20:31
Hi,
weiß jemand, wie man auf das verschieben einer Komponente reagieren kann?
wenn sich die Größe (width & height) ändert, wird wmSize gesendet aber was wenn left und top sich ändert?
Das ganze soll für eine Kompnente z.B. TComboBox oder TEdit verwendet werden,
die 'ihr eigenes' TLabel mit sich führt.
Ich finde es umständlich im Formulardesigner ständig die Labels mit den zugehörigen Eingabeboxen neu auszurichten, außerdem wäre es doch chic den Beschreibungstext gleich als Eigenschaft in der Eingabekomponente zu haben.

Das Problem mit TFrames zu lösen gefällt mir nicht, da auch hier im Formulardesigner oft was versehentlich verschoben werden kann.

Eine Lösung ist folgender Ansatz, der aber nicht so super ist, da neue Eigenschaften für Left und Top erstellt werden müssen, die alten aber nicht ausgeblendet werden können. Aber grundsätzlich funktioniert es:

Delphi-Quellcode:
unit ComboBoxLabel;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls;

type
  TComboBoxLabel = class(TComboBox)
  private
    FText: string;
    FLeft: integer;
    FTop: integer;
    procedure SetText(Value: string);
    procedure SetLeft(Value: integer);
    procedure SetTop(Value: integer);
  protected
    CBLabel: TLabel;
  public
    constructor Create(Owner: TComponent); override;
    procedure SetParent(Value: TWinControl); override;
  published
    property Text: string read FText write SetText;
    property XLeft:integer read FLeft write SetLeft;
    property XTop:integer read FTop write SetTop;
  end;

procedure Register;

implementation

constructor TComboBoxLabel.Create(Owner: TComponent);
begin
  inherited Create(Owner);
  CBLabel:= TLabel.Create(Self);
end;

procedure TComboBoxLabel.SetParent(Value: TWinControl);
begin
  inherited SetParent(Value);
  CBLabel.Parent:= Self.Parent;
end;

procedure TComboBoxLabel.SetText(Value: string);
begin
  FText:= Value;
  CBLabel.Caption:= FText;
end;

procedure TComboBoxLabel.SetLeft(Value: integer);
begin
  FLeft:= Value;

  Left:= FLeft;
  CBLabel.Left:= Left-80;
end;
procedure TComboBoxLabel.SetTop(Value: integer);
begin
  FTop:= Value;

  Top:= FTop;
  CBLabel.Top:= Top;
end;

procedure Register;
begin
  RegisterComponents('Beispiele', [TComboBoxLabel]);
end;

end.
Wenn man nun auf Veränderungen von Left und Top reagieren könnte wäre es wesentlich
schöner
Bernhard
  Mit Zitat antworten Zitat
Benutzerbild von AndreasP
AndreasP

Registriert seit: 14. Aug 2003
Ort: Halle
82 Beiträge
 
Delphi 7 Professional
 
#2

Re: Eingabebox mit Beschriftung

  Alt 17. Jan 2006, 21:44
mahlzeit,

spontan und ohne es getestet zu haben würde ich auf wm_move reagieren.

procedure WMMove(var msg: TMessage); message WM_Move;
Live long and prosper, Andy

Die Diskusion zum AppManager gibt es hier
Immer die aktuelle Version vom AppManger
  Mit Zitat antworten Zitat
Benutzerbild von 3_of_8
3_of_8

Registriert seit: 22. Mär 2005
Ort: Dingolfing
4.129 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: Eingabebox mit Beschriftung

  Alt 17. Jan 2006, 21:46
Es gibt auch LabeledEdits, unter Zusätzlich oder Win32...
Manuel Eberl
„The trouble with having an open mind, of course, is that people will insist on coming along and trying to put things in it.“
- Terry Pratchett
  Mit Zitat antworten Zitat
Daniel G
(Gast)

n/a Beiträge
 
#4

Re: Eingabebox mit Beschriftung

  Alt 17. Jan 2006, 21:48
Samma', Andreas, war bei D7 Professional nicht schon TLabeledEdit dabei? Da könnte man sich doch einen Anreiz holen....

@3_of_8:

Ja, aber noch nicht bei Delphi5.
  Mit Zitat antworten Zitat
Berni68

Registriert seit: 9. Jan 2006
Ort: Villingen
162 Beiträge
 
Delphi XE5 Professional
 
#5

Re: Eingabebox mit Beschriftung

  Alt 21. Jan 2006, 17:25
hab es mit WMMove ausprobiert: einwandfrei. Danke!
Bernhard
  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 13:39 Uhr.
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