AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi Vererbung bestimmter Eigenschaften deaktiviern
Thema durchsuchen
Ansicht
Themen-Optionen

Vererbung bestimmter Eigenschaften deaktiviern

Ein Thema von delphin · begonnen am 19. Jan 2007 · letzter Beitrag vom 19. Jan 2007
Antwort Antwort
Seite 2 von 2     12   
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
 
#11

Re: Vererbung bestimmter Eigenschaften deaktiviern

  Alt 19. Jan 2007, 21:50
Adoptierte Kinder erben schließlich auch keine genetischen Merkmale von ihren Adoptiveltern.
Sie können höchstens Verhaltensweisen von ihnen erben.

So ist es auch hierbei: Ein Laben "erbt" seine Farbe nicht von der Form, weil es nicht von ihr abstammt. Es bekommt sie nur implizit zugewiesen, wenn ParentColor gesetzt ist.
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
TStringlist

Registriert seit: 1. Dez 2003
360 Beiträge
 
Turbo Delphi für Win32
 
#12

Re: Vererbung bestimmter Eigenschaften deaktiviern

  Alt 19. Jan 2007, 22:00
@Hansa: Mit "komplett" meinte ich doch sowieso bloß diejenigen, die es auch nur sollen.
MfG (& Thx ggf.)
  Mit Zitat antworten Zitat
Benutzerbild von inherited
inherited

Registriert seit: 19. Dez 2005
Ort: Rosdorf
2.022 Beiträge
 
Turbo Delphi für Win32
 
#13

Re: Vererbung bestimmter Eigenschaften deaktiviern

  Alt 19. Jan 2007, 22:07
Zitat von 3_of_8:
Adoptierte Kinder erben schließlich auch keine genetischen Merkmale von ihren Adoptiveltern.
Sie können höchstens Verhaltensweisen von ihnen erben.
Heee, der Spruch ist von mir!
Nikolai Wyderka

SWIM SWIM HUNGRY!
Neuer Blog: hier!
  Mit Zitat antworten Zitat
delphin

Registriert seit: 21. Aug 2003
Ort: Chemnitz
29 Beiträge
 
Delphi 7 Professional
 
#14

Re: Vererbung bestimmter Eigenschaften deaktiviern

  Alt 19. Jan 2007, 22:12
ParentFont habe ich mir schon angeschaut. Damit kann man schon verhindern das die Größe des Schrifttypes "geerbt" wird.

Sollte nur zur Veranschaulichung des Phänomens "Erbens" dienen. Die unerklärliche Sache mit der unberücksichtigten "Edit1.Height" bleibt davon aber unberührt !!!

Hier mal das ganze zum Selbstprobieren. Wie Ihr es nennen wollt sei dahin gestellt:

Delphi-Quellcode:
unit Source;

interface

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


type

  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
    procedure CheckListBoxDblClick(Sender: TObject);
    procedure CheckListBoxExit(Sender: TObject);
  private
    Edit1: TEdit;
    CheckListBox : TCheckListBox;
  public
    { Public-Deklarationen }
  end;

var Form1: TForm1;

implementation

{$R *.dfm}


procedure TForm1.FormCreate(Sender: TObject);
Var DrawRect: TRect;
begin CheckListBox:=TCheckListBox.Create(Form1);
      CheckListBox.Parent:=Form1;
      CheckListBox.Font.Size:=10;

      CheckListBox.OnDblClick:=CheckListBoxDblClick;
      CheckListBox.OnExit:=CheckListBoxExit;

      CheckListBox.Items.Add('Zeile 1');
      CheckListBox.Items.Add('Zeile 2');
      CheckListBox.Items.Add('Zeile 3');
      {== Editfeld als Kind von CheckListBox ableiten =======}
      Edit1:=TEdit.Create(Form1);
      Edit1.Parent:=CheckListBox;

      {== Ermitteln der Edit.Höhe über Größe der CheckListbox ==}
      DrawRect:=CheckListBox.ItemRect(0);
      Edit1.Height:=DrawRect.Bottom-DrawRect.Top+1; //Zeile: *1
      Edit1.Visible:=false;
end;

procedure TForm1.CheckListBoxDblClick(Sender: TObject);
Var DrawRect: TRect;
begin DrawRect:=CheckListBox.ItemRect(CheckListBox.ItemIndex);
      Edit1.Text:=CheckListBox.Items.Strings[CheckListBox.ItemIndex];
      Edit1.Top:=DrawRect.Top;
      Edit1.Height:=DrawRect.Bottom-DrawRect.Top+2; //Zeile: *2
      Edit1.Visible:=true;
end;

procedure TForm1.CheckListBoxExit(Sender: TObject);
begin Edit1.Visible:=false;

end;

end.
Nochmal das Problem:
1. Wenn nur Zeile *1: steht (Zeile 2* ausgeklammert), hat es überhaupt keine Auswirkung auf die Höhe der Editbox.
2. Wenn Zeile *2 eingefügt wird, stimmt die Höhe der Box, aber nur ab dem 2. mal anklicken !

Warum !!!

Übrigens: Ob die Edit-Komponente dabei als Privat deklairiert ist spielt kein Rolle!

Wäre wirklich nett, wenn einer dafür eine Lösung hätte. Ich komme an der besagten Stelle einfach nicht weiter.

Viele Grüße und Danke
Gerd
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#15

Re: Vererbung bestimmter Eigenschaften deaktiviern

  Alt 19. Jan 2007, 22:27
Du meinst die Wertevererbung, am im Allgemeinen versteht man unter Vererbung die Vererbung von Eigenschaften. Eine private Eigenschaft wird nicht mitverebt deshalb mein Tipp. In deinem Fall hilft es ja nichts.
Markus Kinzler
  Mit Zitat antworten Zitat
Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#16

Re: Vererbung bestimmter Eigenschaften deaktiviern

  Alt 19. Jan 2007, 22:27
Hallo delphin,

verschiebe einmal die Zuweisung zu Edit1.Visible vor das Setzen der Position bzw. Höhe. Vielleicht solltest du dem Editfeld auch noch den Fokus geben:

Delphi-Quellcode:
procedure TForm1.CheckListBoxDblClick (Sender: TObject);
Var
  DrawRect : TRect;
begin
  DrawRect := CheckListBox.ItemRect(CheckListBox.ItemIndex);
  Edit1.Text := CheckListBox.Items.Strings[CheckListBox.ItemIndex];
  Edit1.Visible := True; // neu
  Edit1.Top := DrawRect.Top;
  Edit1.Height := DrawRect.Bottom - DrawRect.Top + 2; //Zeile: *2
// Edit1.Visible:=true; // entfernt
  Edit1.SetFocus; // neu
end;
Gruß Hawkeye
  Mit Zitat antworten Zitat
delphin

Registriert seit: 21. Aug 2003
Ort: Chemnitz
29 Beiträge
 
Delphi 7 Professional
 
#17

Re: Vererbung bestimmter Eigenschaften deaktiviern

  Alt 19. Jan 2007, 22:37
Hallo Hawkeye219,

Danke für Deine Antwort. So geht es tatsächlich schon beim erstenmal !

Ich wollte das Edit-Element eben erst mit Text versehen und dann sichtbar machen. Von der Logik her schien mir das klüger.
Wie bist Du auf die Lösung gekommen - ausprobiert oder gewußt ?

Ich meine, warum ist die Reihenfolge, wichtig ?

Vielleicht hast Du ja auch noch eine Erklärung, warum die Definition im OnCreate-Ereignis völlig unberücksichtig bleibt - wollte mir es eigentlich sparen, die Größe des Editfeldes immer wieder neu zuberechnen, da sich diese ja nicht ändert !

Danke
Gerd
  Mit Zitat antworten Zitat
Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#18

Re: Vererbung bestimmter Eigenschaften deaktiviern

  Alt 19. Jan 2007, 23:11
Zitat von delphin:
Wie bist Du auf die Lösung gekommen - ausprobiert oder gewußt ?
Ich habe es ausprobiert, weil in ähnlichen Situation eine Vertauschung von Anweisungen oft eine Lösung geliefert hat.

Zitat:
Vielleicht hast Du ja auch noch eine Erklärung, warum die Definition im OnCreate-Ereignis völlig unberücksichtig bleibt
Sorry, ich habe nicht alle Abläufe innerhalb der VCL im Kopf und kann deshalb nur Vermutungen anstellen. Die Höhe des Editfelds ändert sich bei einer Änderung der Schriftgröße ebenfalls. Eventuell werden deine Einstellungen zunächst doch übernommen, später aber durch eine Initialisierung oder Änderung des Fonts überschrieben.
Vielleicht liest ja einer der VCL-Experten mit und kann deine Frage besser beantworten.

Gruß Hawkeye
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 05:19 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