![]() |
AW: Memos und Buttons
Zitat:
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. :D ich hoffe das ist irwie möglich :/ |
AW: Memos und Buttons
#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; |
AW: Memos und Buttons
Zitat:
okay, und was erreiche ich nun damit :? |
AW: Memos und Buttons
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. |
AW: Memos und Buttons
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:29 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