AGB  ·  Datenschutz  ·  Impressum  







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

Memo per ButtonClick schliessen

Ein Thema von Pseudemys Nelsoni · begonnen am 20. Jan 2004 · letzter Beitrag vom 22. Jan 2004
Antwort Antwort
Benutzerbild von Pseudemys Nelsoni
Pseudemys Nelsoni

Registriert seit: 24. Dez 2002
Ort: Hamburg-Harburg
3.551 Beiträge
 
#1

Memo per ButtonClick schliessen

  Alt 20. Jan 2004, 18:10
hoi

ich erstelle zur laufzeit 1 button, 1 memo, 1 tabsheet.



Delphi-Quellcode:
Type TFenster = Record
                  TabSheet: TTabSheet;
                  Memo: TMemo;
                  Button: TButton;
                end;

...

var
  dynArray: Array of TFenster;

...

procedure TForm1.ButtonClick(Button: TObject);
var
  nummer: string;
begin
  with Button as TButton do
  begin
    nummer := Name;
    delete(nummer, 1, 6); // 1-6 = 'Button'
    showmessage('Memo' + nummer);
    (FindComponent('Memo' + nummer) as TMemo).Free;
  end;
end;

...

procedure TForm1.ButtonlClick(Sender: TObject);
begin
  SetLength(dynArray, high(dynArray)+2);
  dynArray[high(dynArray)].TabSheet := TTabSheet.Create(self);
  with dynArray[high(dynArray)].TabSheet do
  begin
    Name := 'TabSheet' + IntToStr(high(dynArray)+1);
    Caption := 'hi';
    PageControl := PageControl1;
    Show;
  end;
  dynArray[high(dynArray)].Memo := TMemo.Create(self);
  with dynArray[high(dynArray)].Memo do
  begin
    Name := 'Memo' + IntToStr(high(dynArray)+1);
    Parent := dynArray[high(dynArray)].TabSheet;
    Left := 10;
    Top := 10;
    Height := dynArray[high(dynArray)].TabSheet.Height-20;
    Width := dynArray[high(dynArray)].TabSheet.Width-20;
    Show;
  end;
  dynArray[high(dynArray)].Button := TButton.Create(self);
  with dynArray[high(dynArray)].Button do
  begin
    Name := 'Button' + IntToStr(high(dynArray)+1);
    Parent := dynArray[high(dynArray)].TabSheet;
    Left := 50;
    Top := 50;
    Height := 21;
    Width := 70;
    Show;
    OnClick := ButtonClick;
  end;
end;


wies geht mein memo per Free nicht weg?
Mario
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Memo per ButtonClick schliessen

  Alt 20. Jan 2004, 19:03
Moin Pseudemys Nelsoni,

das dürfte daran liegen, dass Dein FindComponent im ButtonClick fehlschlägt.
Ohne Angabe der zugehörigen Kompo wird das FindComponent des Formulares benutzt, da es in einer Methode des Formulares aufgerufen wird, der Parent für das Memo ist aber das Tabsheet.
Somit ist das Memo nicht im Array of Components des Formulares enthalten, und wird dort nicht gefunden.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Benutzerbild von Pseudemys Nelsoni
Pseudemys Nelsoni

Registriert seit: 24. Dez 2002
Ort: Hamburg-Harburg
3.551 Beiträge
 
#3

Re: Memo per ButtonClick schliessen

  Alt 20. Jan 2004, 19:46
hoi,

krieg ichn tip

selbst wenn ich überall als Parent Form1 angebe gehts nicht, hmm
Mario
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: Memo per ButtonClick schliessen

  Alt 20. Jan 2004, 19:54
Moin Pseudemys Nelsoni,

dann leg' doch mal in der ButtonClick Routine noch eine Variable vom Typ TComponent an, und weise dieser das Ergebnis von FindComponent zu, statt es direkt zu benutzen.
Anschliessend kannst Du dann ja prüfen, ob FindComponent erfolgreich war oder nicht (Wert der Variablen <> nil => gesuchte Kompo gefunden)
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Benutzerbild von Pseudemys Nelsoni
Pseudemys Nelsoni

Registriert seit: 24. Dez 2002
Ort: Hamburg-Harburg
3.551 Beiträge
 
#5

Re: Memo per ButtonClick schliessen

  Alt 20. Jan 2004, 20:04
Hallo Christian,

Delphi-Quellcode:
procedure TForm1.ButtonClick(Button: TObject);
var
  nummer: string;
  tc: TComponent;
begin
  with (Button as TButton) do
  begin
    nummer := Name;
    tc := TComponent.Create(self);
    delete(nummer, 1, 6); // 1-6 = 'Button'
    tc := FindComponent('Memo' + nummer);
    tc.Free;
  end;
end;
meinst du so? Das funktioniert auch nicht. :\
Mario
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: Memo per ButtonClick schliessen

  Alt 20. Jan 2004, 20:06
Moin Pseudemys Nelsoni,

im Prinzip meinte ich das so, nur, dass Du erst einmal nachschauen solltest, ob tc überhaupt einen gültigen Wert enthält.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Benutzerbild von Pseudemys Nelsoni
Pseudemys Nelsoni

Registriert seit: 24. Dez 2002
Ort: Hamburg-Harburg
3.551 Beiträge
 
#7

Re: Memo per ButtonClick schliessen

  Alt 20. Jan 2004, 20:15
tc erhält "Memo1"

deswegen hab ich s.o im Test auch "showmessage('Memo' + nummer);" mit drin gehabt, hatte nur vergessen das hier für das forum rauszunehmen
Mario
  Mit Zitat antworten Zitat
Benutzerbild von Pseudemys Nelsoni
Pseudemys Nelsoni

Registriert seit: 24. Dez 2002
Ort: Hamburg-Harburg
3.551 Beiträge
 
#8

Re: Memo per ButtonClick schliessen

  Alt 21. Jan 2004, 05:07
hm, selbst wenn ich findcomponent direkt "Memo!" gebe schlisst sich das memo1 nicht:

Delphi-Quellcode:
procedure TForm1.ButtonClick(Button: TObject);
var
  tc: TComponent;
begin
  with (Button as TButton) do
  begin
    tc := TComponent.Create(self);
    tc := FindComponent('Memo1');
    tc.Free;
  end;
end;
Mario
  Mit Zitat antworten Zitat
Benutzerbild von Pseudemys Nelsoni
Pseudemys Nelsoni

Registriert seit: 24. Dez 2002
Ort: Hamburg-Harburg
3.551 Beiträge
 
#9

Re: Memo per ButtonClick schliessen

  Alt 21. Jan 2004, 05:09
lag komischerweise daran, das ich das Memo1.free innerhalb von dem with button as tbutton ausgeführt habe, komisch, wieso das? also es geht so:

Delphi-Quellcode:
procedure TForm1.ButtonClick(Button: TObject);
var
  tc: TComponent;
begin
  tc := TComponent.Create(self);
  tc := FindComponent('Memo1');
  tc.Free;
end;
bzw so:

Delphi-Quellcode:
procedure TForm1.ButtonClick(Button: TObject);
begin
  TMemo(FindComponent('Memo1')).Free;
end;
Mario
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#10

Re: Memo per ButtonClick schliessen

  Alt 22. Jan 2004, 19:21
Moin Pseudemys Nelsoni,

dann schau Dir mal in der Hilfe die Methoden von TButton an.
Danach dürfte klar sein, warum es nicht so funktioniert hat.

BTW:
In meinem ersten Posting hatte ich Dir ja schon vorgeschlagen mit anzugeben, von welcher Kompo Du das FindComponent benutzen willst.
Zugegeben, meine Feststellung mit dem Form1.FindComponent war falsch, weil ich das With nicht beachtet hatte, aber bei direkter Angabe der Kompo vor dem FindComponent hätte es auch innerhalb des With-Blockes funktioniert.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  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 01:58 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