AGB  ·  Datenschutz  ·  Impressum  







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

Memos und Buttons

Ein Thema von deppen · begonnen am 4. Apr 2013 · letzter Beitrag vom 6. Apr 2013
Antwort Antwort
Seite 3 von 3     123   
deppen

Registriert seit: 11. Mär 2013
18 Beiträge
 
#21

AW: Memos und Buttons

  Alt 5. Apr 2013, 00:14
Ich versteh ehrlich gesagt auch nicht, wo jetzt auf einmal geklickt wird.

Was soll das Programm tun - Der Benutzer gibt fest 15 Kommazahlen ein und das Programm druckt dann nochmal alle 15 Zahlen und den Durchschnitt in eine Memo, richtig? Wenn ja, wie gibt der Benutzer das ein? Habt ihr fest mehrere Buttons erstellt die für jede Note stehen sollen?
Also:

Wir haben 16 Button mit den zahlen 0 bis 15, wenn irgendeine angeklickt wird, so erscheint diese im Memo. Nun kann der Nutzer seine Noten "eintragen". Es erscheint dann bspw. : 13 14 15 7 4 (untereinander). Dann haben wir einen Button, wo die letzte Aktion rückgängig gemacht wird und einen, wo das komplette Memo gelöscht wird, also der Inhalt.

Nun zum Ziel der Sache. Mit den Noten, die in das Memo eingetragen wurden, soll nun die Summer ermittelt werden, wenn ein weiterer Button geklickt wird. Um nun den Mittelwert zuerrechnen. Also das kann ja gleich passieren. also Summe berechnen und dann gleich den Mittelwert. Dieser Mittelwert soll dann in einem Edit-Feld ausgegeben werden.

So haben wir uns das vorgestellt.

ich hoffe das ist irwie möglich :/
  Mit Zitat antworten Zitat
Jumpy

Registriert seit: 9. Dez 2010
Ort: Mönchengladbach
1.737 Beiträge
 
Delphi 6 Enterprise
 
#22

AW: Memos und Buttons

  Alt 5. Apr 2013, 08:45
#20 schon gesehen?

Ich ergänze das noch. Jedem eurer 15 Buttons im Obejekt-Inspektor noch den entsprechenden Wert (1-15) in der Eigenschaft Tag eintragen und im OnClick-Ereignis folgende (noch zu erstellende) Prozedur eintragen: "AllButtonClick".

Die könnte dann so aussehen:

Delphi-Quellcode:
TForm1.AllButtonClick(Sender:TObject)
begin
  if Sender is TButton then
    NoteHinzu(TButton(Sender).Tag);
end;
Ralph
  Mit Zitat antworten Zitat
deppen

Registriert seit: 11. Mär 2013
18 Beiträge
 
#23

AW: Memos und Buttons

  Alt 6. Apr 2013, 01:12
#20 schon gesehen?

Ich ergänze das noch. Jedem eurer 15 Buttons im Obejekt-Inspektor noch den entsprechenden Wert (1-15) in der Eigenschaft Tag eintragen und im OnClick-Ereignis folgende (noch zu erstellende) Prozedur eintragen: "AllButtonClick".

Die könnte dann so aussehen:

Delphi-Quellcode:
TForm1.AllButtonClick(Sender:TObject)
begin
  if Sender is TButton then
    NoteHinzu(TButton(Sender).Tag);
end;

okay, und was erreiche ich nun damit
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#24

AW: Memos und Buttons

  Alt 6. Apr 2013, 08:10
Ich hätte noch einen kleinen Vorschlag ...
Delphi-Quellcode:
program NotenAVG;

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

Type
  TNoteArray = Array [0 .. 15] of Integer;

  TWorker = Class
  private
    FNoteArray: TNoteArray;
    function GetAvg: Double;
  public
    procedure AddNote(Sender: TObject);
    procedure ListViewData(Sender: TObject; Item: TListItem);
  End;

var
  Worker: TWorker;
  NoteArray: TNoteArray;
  F: TForm;
  LV: TListView;
  i: Integer;

  { TWorker }

procedure TWorker.AddNote(Sender: TObject);
begin
  FNoteArray[TControl(Sender).Tag] := FNoteArray[TControl(Sender).Tag] + 1;
  LV.Invalidate;
end;

Function TWorker.GetAvg: Double;
var
  i, cnt: Integer;
begin
  cnt := 0;
  Result := 0;
  for i := 0 to 15 do
  begin
    cnt := cnt + FNoteArray[i];
    Result := Result + FNoteArray[i] * i;
  end;
  if cnt > 0 then
    Result := Result / cnt;
end;

procedure TWorker.ListViewData(Sender: TObject; Item: TListItem);
begin
  if Item.Index = 16 then
  begin
    Item.Caption := 'AVG';
    Item.SubItems.Add(FormatFloat('0.00', GetAvg));
  end
  else
  begin
    Item.Caption := Format('%d Punkte', [Item.Index]);
    Item.SubItems.Add(IntToStr(FNoteArray[Item.Index]));
  end;
end;

begin
  Worker := TWorker.Create;
  try
    F := TForm.Create(Application);
    F.ClientHeight := 16 * 24;
    F.ClientWidth := 230;
    F.DoubleBuffered := true;
    LV := TListView.Create(F);
    LV.Parent := F;
    LV.Width := 200;
    LV.ViewStyle := vsReport;
    LV.Font.Style := [fsBold];
    With LV.Columns.Add do
    begin
      Caption := 'Note';
      Width := 100;
    end;
    With LV.Columns.Add do
    begin
      Caption := 'Anzahl';
      Width := 96;
    end;
    LV.Align := alLeft;
    LV.OwnerData := true;
    LV.Items.Count := 17;
    LV.OnData := Worker.ListViewData;
    for i := 0 to 15 do
    begin
      With TButton.Create(F) do
      begin
        Parent := F;
        Tag := i;
        Left := 200;
        Height := 24;
        Width := 30;
        Top := i * Height;
        Caption := IntToStr(i);
        OnClick := Worker.AddNote;
      end;
    end;
    F.ShowModal;
  finally
    Worker.Free;
  end;

end.
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.176 Beiträge
 
Delphi 10 Seattle Enterprise
 
#25

AW: Memos und Buttons

  Alt 6. Apr 2013, 12:23
okay, und was erreiche ich nun damit
Jeder Button (und auch eine Menge mehr) haben eine "Tag"-Eigenschaft, das ist nur eine Zahl die jedes vom Benutzer anklickbare Element auf einem Formular hat. Ihr gebt jedem Button in seiner Tag-Eigenschaft einmal die Anzahl der Punkte die er hinzufügen soll (genauso wie z.B. eine Caption) und braucht jetzt nur einmal diese zweizeilige Prozedur die mit allen Button funktioniert - Ihr müsst nicht für jeden Button eine eigene Prozedur machen.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 3     123   


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 18:35 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