AGB  ·  Datenschutz  ·  Impressum  







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

mehrere Buttons erstellen

Ein Thema von [TP]Hawk274 · begonnen am 25. Mär 2003 · letzter Beitrag vom 28. Mär 2003
Antwort Antwort
[TP]Hawk274
(Gast)

n/a Beiträge
 
#1

mehrere Buttons erstellen

  Alt 25. Mär 2003, 20:47
Ich möchte mehrere Buttons erstellen. Dabei will ich aber auf jeden Button einen Pointer haben. Des weiterem will ich alle Buttons als Array verwalten. Also möchte ich quasi ein Array Pointer. Doch dabei bin ich auf Probleme gestoßen.
Folgende Lösungsansatz habe ich bereits. Doch beim ersten Create eines Buttons kommt eine Schutzverletztung. Aber warum? In diesem Source ist auch noch nicht realisiert das ich auf alle Buttons einen Pointer habe. Oder ist die Variable pbTemp dann als Zeiger "an zu sehn"!?
Code:
  const
    MAX_BUTTONS = 500;

  var
    pbTemp: Array of TButton;
 
  .
  .
  .

  SetLength(pbTemp,MAX_BUTTONS);
  for i:=0 to MAX_BUTTONS-1 do
    pbTemp := nil;

  for i:=0 to MAX_BUTTONS do
  begin
    pbTemp[i] := TButton.Create(nil);
    pbTemp[i].Name := 'ButtonNr' + IntToStr(i);
    pbTemp[i].Parent := Form1;
    pbTemp[i].Top := 16 + 1;
    pbTemp[i].Left := 300;
  end;
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#2
  Alt 25. Mär 2003, 20:56
Öhm.
pTemp := nil; Nach
setlength(ptemp, MAXBUTTONS); Macht das dein Array nicht wieder zu nichte?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Daniel
(Co-Admin)

Registriert seit: 30. Mai 2002
Ort: Hamburg
13.919 Beiträge
 
Delphi 10.4 Sydney
 
#3

Re: mehrere Buttons erstellen

  Alt 25. Mär 2003, 20:58
Delphi-Quellcode:
  for i:=0 to MAX_BUTTONS-1 do
    pbTemp := nil;
Mit diesem Code setzt Du das Array als solches 500 mal auf NIL. Was Du beabsichtigt hast, was folgendes:

Delphi-Quellcode:
  for i:=0 to MAX_BUTTONS-1 do
    pbTemp[i] := nil;
Da Du danach aber so oder so gleich 500 Einträge in das Array schreibst, kannst Du Dir diese Initialisierung hier auch sparen und gleich die Buttons erzeugen:

Delphi-Quellcode:
  for i:=0 to MAX_BUTTONS-1 do
  begin
    pbTemp[i] := TButton.Create(nil);
    pbTemp[i].Name := 'ButtonNr' + IntToStr(i);
    pbTemp[i].Parent := Form1;
    pbTemp[i].Top := 16 + 1;
    pbTemp[i].Left := 300;
  end;
Die "-1" hinter der Konstanten nicht vergessen... Der Rest müsste aber klappen.
Daniel R. Wolf
mit Grüßen aus Hamburg
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#4
  Alt 25. Mär 2003, 21:07
Noch ein Tipp: Überdenk mal diese Zeile
pbTemp[i].Top := 16 + 1; Wenn das ein großes i ist dann liegen alle Buttons um ein Pixel verschoben aufeinander. Mach aus + mal ein *.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
[TP]Hawk274
(Gast)

n/a Beiträge
 
#5
  Alt 26. Mär 2003, 22:33
Danke für eure Tipps.

Zitat:
Wenn das ein großes i ist dann liegen alle Buttons um ein Pixel verschoben aufeinander. Mach aus + mal ein *.
Das ist mir Wurst wo die Buttons liegen. Ich lösche diese sowieso wieder.

Zitat:
Mit diesem Code setzt Du das Array als solches 500 mal auf NIL
Stimmt erstens brauch mal das Array nicht intialisieren, wenn man es danach sowieso wieder bearbeitet. Aber wenn man alle Array's intialisieren will muss man dieses auch tun und nicht wie ich
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#6
  Alt 27. Mär 2003, 05:50
Zitat von [TP:
Hawk274]
Das ist mir Wurst wo die Buttons liegen. Ich lösche diese sowieso wieder.
Und wozu dann das ganze?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
[TP]Hawk274
(Gast)

n/a Beiträge
 
#7
  Alt 28. Mär 2003, 17:01
Zitat:
Und wozu dann das ganze?
Ich wollte mal einen performenztest machen. Deshalb habe ich u.a. ein paar Buttons erstellen lassen.
  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 10:32 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