Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi reset eines programmes? (https://www.delphipraxis.net/23207-reset-eines-programmes.html)

herrentor 30. Mai 2004 20:50


reset eines programmes?
 
moin, ich bins wieder. wie ihr seht, hab ich noch nicht so den plan über befehle in delphi.

deshalb meine frage: wie resettet ich ein programm? bzw. wie setze ich eine combobox in den anfangszustand zurück?

danke im voraus.

Ratte 30. Mai 2004 20:54

Re: reset eines programmes?
 
Fallen mir zwei Sachen ein:
1) für alle Werte die geändert werden standartkonstanten anlegen u. zuweisen = Aufwand³³³³³³³³³ (Bei kompos. evt. Tag benutzen)
2) das Proggi neustarten

Ratte

Christian Seehase 30. Mai 2004 20:57

Re: reset eines programmes?
 
Moin Herrentor,

weitere Variante:
Initialisieren aller entsprechenden Komponenten/Variablen an zentraler Stelle, und diese Routine bei einem Reset wieder aufrufen.

herrentor 30. Mai 2004 21:04

Re: reset eines programmes?
 
wie starte ich das programm neu?

ich hab die erste variante von ratte, jedoch ist das problem da, dass ich die combobox nicht wieder zurücksetzen kann.

Christian Seehase 30. Mai 2004 21:10

Re: reset eines programmes?
 
Moin Herrentor,

Zitat:

Zitat von herrentor
...dass ich die combobox nicht wieder zurücksetzen kann.

wieso das? :gruebel:

herrentor 30. Mai 2004 21:36

Re: reset eines programmes?
 
ich kenn den befehl nicht, der die combobox in den anfangszustand bringt.

Code:

 combobox.items[-1];
das klappt nicht.

H4ndy 30. Mai 2004 21:50

Re: reset eines programmes?
 
Delphi-Quellcode:
combobox.items.clear
:hi:

herrentor 30. Mai 2004 22:00

Re: reset eines programmes?
 
hatte ich schon versucht und habs gerade nochmal probiert, klappt nicht.

Ultimator 30. Mai 2004 22:12

Re: reset eines programmes?
 
Was klappt denn nicht. Was möchtest du denn überhaupt? :gruebel:

herrentor 30. Mai 2004 22:14

Re: reset eines programmes?
 
die combobox wird nicht bei einem drücken des reset buttons in den anfangszustand gesetzt. es bleibt das zuletzt ausgewählte drin stehen.

Chewie 30. Mai 2004 22:15

Re: reset eines programmes?
 
Setz mal ComboBox.ItemIndex auf -1.

herrentor 30. Mai 2004 22:23

Re: reset eines programmes?
 
geht auch nicht

NeoXX 30. Mai 2004 22:47

Re: reset eines programmes?
 
Dann schließ doch einfach das Prog und im
Code:
OnClose
startest
Du es mit
Code:
ShellEcecute
wieder neu... :?:

herrentor 30. Mai 2004 22:53

Re: reset eines programmes?
 
muss ich dann hinter onclose den programmnamen hängen?

kiar 30. Mai 2004 23:03

Re: reset eines programmes?
 
so gehts
Delphi-Quellcode:
combobox1.Items.strings[0]:='';
combobox1.Items.clear;
raik

herrentor 30. Mai 2004 23:06

Re: reset eines programmes?
 
listenindex überschreitet das maximum(0)

was auch immer das zu bedeuten hat

kiar 30. Mai 2004 23:08

Re: reset eines programmes?
 
haste du das auch genau so übernommen?

herrentor 30. Mai 2004 23:10

Re: reset eines programmes?
 
ja, hab es sogar reinkopiert

kiar 30. Mai 2004 23:11

Re: reset eines programmes?
 
sorry für die 0 mal combobox1.itemindex einsetzen

funktioniert aber nur wenn itemindex <> -1 ist.

NeoXX 30. Mai 2004 23:16

Re: reset eines programmes?
 
Also wenn Du nun einen kompletten Reset Deines Programms willst dann...
Code:
unit Unit1;

interface

uses
  Windows, SysUtils, Forms, StdCtrls, Controls, Classes,
  ShellAPI; // <- die Unit ShellAPI wird für ShellExecute benötigt !!!
type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure Button1Click(Sender: TObject);
  end;

var
  Form1: TForm1;
  Reset: Boolean = FALSE;

implementation

{$R *.dfm}

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  if Reset then begin
    ShellExecute(Self.Handle, 'open', PChar(Application.ExeName), '',
                 PChar(ExtractFilePath(Application.ExeName)), SW_SHOWNORMAL);
    Action := caFree;
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  Reset := TRUE;
  Form1.Close();
end;

end.
...ansonsten wenn Du nur die den Index der ListBox zurücksetzen

Code:
if (ListBox.Items.Count > 0) then ListBox.ItemIndex := 0 else ListBox1.ItemIndex := -1;
Wenn es das war was du wolltest :gruebel:

herrentor 30. Mai 2004 23:18

Re: reset eines programmes?
 
wie drück ich das aus, dass itemindex -1 ist? wenn ich das nämlich nicht schreibe, sagt er: der listenindex überschreitet das maximum von (-1)

kiar 30. Mai 2004 23:21

Re: reset eines programmes?
 
Delphi-Quellcode:
if Combobox1.itemindex <> -1 then
     begin
       combobox1.Items.strings[ComboBox1.itemindex]:='';
       combobox1.Items.clear;
     end;
ausserdem muss ja schon was gewählt wurden sein, sonst würde ja ein löschen keinen sinn machen.

NeoXX 30. Mai 2004 23:22

Re: reset eines programmes?
 
HEy, wo ist meine Antwort hin :?:

Christian Seehase 30. Mai 2004 23:27

Re: reset eines programmes?
 
Moin Raik,

Du meintest wahrscheinlich:

Delphi-Quellcode:
ComboBox1.Text := '';
ComboBox1.Items.Clear;

herrentor 30. Mai 2004 23:28

Re: reset eines programmes?
 
jetzt ändert er das aktivierte nicht und löscht außerdem die liste mit der auswahl

Christian Seehase 30. Mai 2004 23:31

Re: reset eines programmes?
 
Moin Herrentor,

wie sieht denn die Combobox aus, wenn das Programm startet?
Sind da schon Inhalte drin, oder ist sie leer?

herrentor 30. Mai 2004 23:31

Re: reset eines programmes?
 
auch hier bleibt die auswahl erhalten und die liste wird gelöscht, erst nach einem klick in die combobox steht nichts mehr drin.

kiar 30. Mai 2004 23:33

Re: reset eines programmes?
 
moin chris.

das oben funktioniert auch :mrgreen: , obwohl deins eleganter ist

raik

herrentor 30. Mai 2004 23:33

Re: reset eines programmes?
 
dieser teil steht in meiner prozedur formcreate:

Code:

with Combobox1 do                      
  begin
    Tab.DefaultRowHeight := Height;
    Visible := False;
    Items.Add('Rechteck');
    Items.Add('Dreieck');
    Items.Add('Kreissektor');
    Items.Add('Kreisabschnitt');
    Items.Add('Kreis');
    Text := '';
  end;
sprich es steht noch kein begriff drin, aber die liste ist gefüllt.

Christian Seehase 30. Mai 2004 23:35

Re: reset eines programmes?
 
Moin Raik,

kann eigentlich nicht sein. :gruebel:
Der Inhalt des Editfeldes der ComboBox wird von Deiner Version doch unberührt gelassen.
Du löscht erst den Inhalt eines Items der Drop Down Liste, und anschliessend die ganze Liste.

Christian Seehase 30. Mai 2004 23:37

Re: reset eines programmes?
 
Moin Herrentor,

dann solltest Du die Routine ergänzen:

Code:
with Combobox1 do                      
  begin
    Tab.DefaultRowHeight := Height;
    Visible := False;
    [color=red]Items.Clear;[/color]
    Items.Add('Rechteck');
    Items.Add('Dreieck');
    Items.Add('Kreissektor');
    Items.Add('Kreisabschnitt');
    Items.Add('Kreis');
    Text := '';
  end;
Anschliessend lagerst Du die Routine in einer Methode des Formulares aus, und rufst diese einmal aus dem Form Create, und ein anderes Mal aus der Button Click Routine des Reset Buttons auf.

kiar 30. Mai 2004 23:38

Re: reset eines programmes?
 
moin chris,

getestet und für gut befunden :mrgreen:

raik

Christian Seehase 30. Mai 2004 23:39

Re: reset eines programmes?
 
Moin Raik,

Deins oder meins :gruebel: :mrgreen:

kiar 30. Mai 2004 23:40

Re: reset eines programmes?
 
moin chris,

deins und meins :mrgreen:

raik

herrentor 30. Mai 2004 23:41

Re: reset eines programmes?
 
das steht bei mir in der tabselectcell prozedur

Code:

var R: TRect;
     i: integer;

begin
  if (ACol = 1) and (ARow > 0) then
  begin
    R := Tab.CellRect(ACol, ARow);
    R.Left := R.Left + Tab.Left;
    R.Right := R.Right + Tab.Left;
    R.Top := R.Top + Tab.Top;
    R.Bottom := R.Bottom + Tab.Top;
    with Combobox1 do
    begin
      ItemIndex := Items.IndexOf(Tab.Cells[ACol, ARow]);
      Left := R.Left + 1;
      Top := R.Top + 1;
      Width := (R.Right + 1) - R.Left;
      Height := (R.Bottom + 1) - R.Top;
      Visible := True;
      SetFocus;
    end;
  end;
 CanSelect := True;
end;
und das im programm:

Code:

procedure TForm1.ComboBox1Change(Sender: TObject);

begin
  Tab.Cells[Tab.Col, Tab.Row]:=ComboBox1.Items[ComboBox1.ItemIndex];
  ComboBox1.Visible := False;
  Tab.SetFocus;
end;

procedure TForm1.ComboBox1Exit(Sender: TObject);
begin
  Tab.Cells[Tab.Col, Tab.Row]:=ComboBox1.Items[ComboBox1.ItemIndex];
  ComboBox1.Visible := False;
  Tab.SetFocus;
end;

herrentor 30. Mai 2004 23:43

Re: reset eines programmes?
 
wie lager ich denn aus?

kiar 30. Mai 2004 23:43

Re: reset eines programmes?
 
moin herrentor,

in beiden proceduren machst du das gleiche :shock: warum?

raik

herrentor 30. Mai 2004 23:45

Re: reset eines programmes?
 
wenn ich eins weglasse, spinnt er total rum.

Christian Seehase 30. Mai 2004 23:52

Re: reset eines programmes?
 
Moin Herrentor,

Du kannst eine Prozedur unterschiedlichen Ereignissen zuweisen, wenn ihre Parameter übereinstimmen.
In diesem Falle kannst Du, z.B., die OnChange so lassen wie sie ist, und sie im Objekt Inspektor dem OnExit Event zuweisen (klick mal auf den Pfeil abwärts rechts vom Event)

herrentor 31. Mai 2004 00:00

Re: reset eines programmes?
 
ok danke


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:43 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz