Copytrading-Tabs: ToolStrips in ClosedTrades + AccountSettings
Konsistent zum Master-Trader-Tab bekommen die beiden anderen Tabs eine ToolStrip
mit ihren Aktions-Buttons:
- ClosedTradesView: ToolStrip mit "Aktualisieren"; Kurzauswertung wandert in eine
untere Statusleiste (lblSummary).
- AccountSettingsView: ToolStrip mit Account-Auswahl (ToolStripComboBox) +
"Speichern"; Hinweistext in untere Statusleiste (lblHint).
- Beide bleiben Designer-basiert (Size statt ClientSize, da UserControl).
Hinweis: Separate Einzelview-Registrierungen existieren nicht mehr (bereits in
c3d7e41 auf die eine View copytrading.main konsolidiert); die drei UserControls
sind ausschliesslich Tab-Inhalte.
Verifiziert: Build gruen, --smoke-ui gruen.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.8
parent
c3d7e41e62
commit
e27a659529
@@ -17,118 +17,110 @@ namespace PolyTrader.Modules.CopyTrading.Ui
|
|||||||
|
|
||||||
private void InitializeComponent()
|
private void InitializeComponent()
|
||||||
{
|
{
|
||||||
pnlTop = new Panel();
|
this.toolbar = new System.Windows.Forms.ToolStrip();
|
||||||
cmbAccounts = new ComboBox();
|
this.tsAccountLabel = new System.Windows.Forms.ToolStripLabel();
|
||||||
lblAccount = new Label();
|
this.tsAccounts = new System.Windows.Forms.ToolStripComboBox();
|
||||||
pgSettings = new PropertyGrid();
|
this.tsSep = new System.Windows.Forms.ToolStripSeparator();
|
||||||
pnlBottom = new Panel();
|
this.tsSave = new System.Windows.Forms.ToolStripButton();
|
||||||
lblHint = new Label();
|
this.pgSettings = new System.Windows.Forms.PropertyGrid();
|
||||||
btnSave = new Button();
|
this.statusPanel = new System.Windows.Forms.Panel();
|
||||||
pnlTop.SuspendLayout();
|
this.lblHint = new System.Windows.Forms.Label();
|
||||||
pnlBottom.SuspendLayout();
|
this.toolbar.SuspendLayout();
|
||||||
SuspendLayout();
|
this.statusPanel.SuspendLayout();
|
||||||
|
this.SuspendLayout();
|
||||||
//
|
//
|
||||||
// pnlTop
|
// toolbar
|
||||||
//
|
//
|
||||||
pnlTop.Controls.Add(cmbAccounts);
|
this.toolbar.GripStyle = System.Windows.Forms.ToolStripGripStyle.Hidden;
|
||||||
pnlTop.Controls.Add(lblAccount);
|
this.toolbar.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||||
pnlTop.Dock = DockStyle.Top;
|
this.tsAccountLabel,
|
||||||
pnlTop.Location = new Point(0, 0);
|
this.tsAccounts,
|
||||||
pnlTop.Margin = new Padding(4, 5, 4, 5);
|
this.tsSep,
|
||||||
pnlTop.Name = "pnlTop";
|
this.tsSave});
|
||||||
pnlTop.Padding = new Padding(11, 13, 11, 10);
|
this.toolbar.Location = new System.Drawing.Point(0, 0);
|
||||||
pnlTop.Size = new Size(800, 73);
|
this.toolbar.Name = "toolbar";
|
||||||
pnlTop.TabIndex = 0;
|
this.toolbar.Size = new System.Drawing.Size(560, 25);
|
||||||
|
this.toolbar.TabIndex = 0;
|
||||||
//
|
//
|
||||||
// cmbAccounts
|
// tsAccountLabel
|
||||||
//
|
//
|
||||||
cmbAccounts.Dock = DockStyle.Fill;
|
this.tsAccountLabel.Name = "tsAccountLabel";
|
||||||
cmbAccounts.DropDownStyle = ComboBoxStyle.DropDownList;
|
this.tsAccountLabel.Size = new System.Drawing.Size(56, 22);
|
||||||
cmbAccounts.Location = new Point(97, 13);
|
this.tsAccountLabel.Text = "Account:";
|
||||||
cmbAccounts.Margin = new Padding(4, 5, 4, 5);
|
|
||||||
cmbAccounts.Name = "cmbAccounts";
|
|
||||||
cmbAccounts.Size = new Size(692, 33);
|
|
||||||
cmbAccounts.TabIndex = 1;
|
|
||||||
//
|
//
|
||||||
// lblAccount
|
// tsAccounts
|
||||||
//
|
//
|
||||||
lblAccount.Dock = DockStyle.Left;
|
this.tsAccounts.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||||
lblAccount.Location = new Point(11, 13);
|
this.tsAccounts.Name = "tsAccounts";
|
||||||
lblAccount.Margin = new Padding(4, 0, 4, 0);
|
this.tsAccounts.Size = new System.Drawing.Size(320, 25);
|
||||||
lblAccount.Name = "lblAccount";
|
//
|
||||||
lblAccount.Size = new Size(86, 50);
|
// tsSep
|
||||||
lblAccount.TabIndex = 0;
|
//
|
||||||
lblAccount.Text = "Account:";
|
this.tsSep.Name = "tsSep";
|
||||||
lblAccount.TextAlign = ContentAlignment.MiddleLeft;
|
this.tsSep.Size = new System.Drawing.Size(6, 25);
|
||||||
|
//
|
||||||
|
// tsSave
|
||||||
|
//
|
||||||
|
this.tsSave.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text;
|
||||||
|
this.tsSave.Name = "tsSave";
|
||||||
|
this.tsSave.Size = new System.Drawing.Size(69, 22);
|
||||||
|
this.tsSave.Text = "Speichern";
|
||||||
//
|
//
|
||||||
// pgSettings
|
// pgSettings
|
||||||
//
|
//
|
||||||
pgSettings.Dock = DockStyle.Fill;
|
this.pgSettings.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||||
pgSettings.Location = new Point(0, 73);
|
this.pgSettings.Location = new System.Drawing.Point(0, 25);
|
||||||
pgSettings.Margin = new Padding(4, 5, 4, 5);
|
this.pgSettings.Name = "pgSettings";
|
||||||
pgSettings.Name = "pgSettings";
|
this.pgSettings.PropertySort = System.Windows.Forms.PropertySort.Categorized;
|
||||||
pgSettings.PropertySort = PropertySort.Categorized;
|
this.pgSettings.Size = new System.Drawing.Size(560, 549);
|
||||||
pgSettings.Size = new Size(800, 847);
|
this.pgSettings.TabIndex = 1;
|
||||||
pgSettings.TabIndex = 1;
|
this.pgSettings.ToolbarVisible = false;
|
||||||
pgSettings.ToolbarVisible = false;
|
|
||||||
//
|
//
|
||||||
// pnlBottom
|
// statusPanel
|
||||||
//
|
//
|
||||||
pnlBottom.Controls.Add(lblHint);
|
this.statusPanel.Controls.Add(this.lblHint);
|
||||||
pnlBottom.Controls.Add(btnSave);
|
this.statusPanel.Dock = System.Windows.Forms.DockStyle.Bottom;
|
||||||
pnlBottom.Dock = DockStyle.Bottom;
|
this.statusPanel.Location = new System.Drawing.Point(0, 574);
|
||||||
pnlBottom.Location = new Point(0, 920);
|
this.statusPanel.Name = "statusPanel";
|
||||||
pnlBottom.Margin = new Padding(4, 5, 4, 5);
|
this.statusPanel.Size = new System.Drawing.Size(560, 26);
|
||||||
pnlBottom.Name = "pnlBottom";
|
this.statusPanel.TabIndex = 2;
|
||||||
pnlBottom.Padding = new Padding(11, 13, 11, 13);
|
|
||||||
pnlBottom.Size = new Size(800, 80);
|
|
||||||
pnlBottom.TabIndex = 2;
|
|
||||||
//
|
//
|
||||||
// lblHint
|
// lblHint
|
||||||
//
|
//
|
||||||
lblHint.Dock = DockStyle.Fill;
|
this.lblHint.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||||
lblHint.ForeColor = Color.DimGray;
|
this.lblHint.ForeColor = System.Drawing.Color.DimGray;
|
||||||
lblHint.Location = new Point(11, 13);
|
this.lblHint.Location = new System.Drawing.Point(0, 0);
|
||||||
lblHint.Margin = new Padding(4, 0, 4, 0);
|
this.lblHint.Name = "lblHint";
|
||||||
lblHint.Name = "lblHint";
|
this.lblHint.Padding = new System.Windows.Forms.Padding(8, 0, 0, 0);
|
||||||
lblHint.Size = new Size(607, 54);
|
this.lblHint.Size = new System.Drawing.Size(560, 26);
|
||||||
lblHint.TabIndex = 1;
|
this.lblHint.TabIndex = 0;
|
||||||
lblHint.TextAlign = ContentAlignment.MiddleLeft;
|
this.lblHint.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
|
||||||
//
|
|
||||||
// btnSave
|
|
||||||
//
|
|
||||||
btnSave.Dock = DockStyle.Right;
|
|
||||||
btnSave.Location = new Point(618, 13);
|
|
||||||
btnSave.Margin = new Padding(4, 5, 4, 5);
|
|
||||||
btnSave.Name = "btnSave";
|
|
||||||
btnSave.Size = new Size(171, 54);
|
|
||||||
btnSave.TabIndex = 0;
|
|
||||||
btnSave.Text = "Speichern";
|
|
||||||
btnSave.UseVisualStyleBackColor = true;
|
|
||||||
//
|
//
|
||||||
// AccountSettingsView
|
// AccountSettingsView
|
||||||
//
|
//
|
||||||
AutoScaleDimensions = new SizeF(10F, 25F);
|
this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 15F);
|
||||||
AutoScaleMode = AutoScaleMode.Font;
|
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||||
Controls.Add(pgSettings);
|
this.Controls.Add(this.pgSettings);
|
||||||
Controls.Add(pnlBottom);
|
this.Controls.Add(this.statusPanel);
|
||||||
Controls.Add(pnlTop);
|
this.Controls.Add(this.toolbar);
|
||||||
Margin = new Padding(4, 5, 4, 5);
|
this.Name = "AccountSettingsView";
|
||||||
Name = "AccountSettingsView";
|
this.Size = new System.Drawing.Size(560, 600);
|
||||||
Size = new Size(800, 1000);
|
this.toolbar.ResumeLayout(false);
|
||||||
pnlTop.ResumeLayout(false);
|
this.toolbar.PerformLayout();
|
||||||
pnlBottom.ResumeLayout(false);
|
this.statusPanel.ResumeLayout(false);
|
||||||
ResumeLayout(false);
|
this.ResumeLayout(false);
|
||||||
|
this.PerformLayout();
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
private System.Windows.Forms.Panel pnlTop;
|
private System.Windows.Forms.ToolStrip toolbar;
|
||||||
private System.Windows.Forms.ComboBox cmbAccounts;
|
private System.Windows.Forms.ToolStripLabel tsAccountLabel;
|
||||||
private System.Windows.Forms.Label lblAccount;
|
private System.Windows.Forms.ToolStripComboBox tsAccounts;
|
||||||
|
private System.Windows.Forms.ToolStripSeparator tsSep;
|
||||||
|
private System.Windows.Forms.ToolStripButton tsSave;
|
||||||
private System.Windows.Forms.PropertyGrid pgSettings;
|
private System.Windows.Forms.PropertyGrid pgSettings;
|
||||||
private System.Windows.Forms.Panel pnlBottom;
|
private System.Windows.Forms.Panel statusPanel;
|
||||||
private System.Windows.Forms.Label lblHint;
|
private System.Windows.Forms.Label lblHint;
|
||||||
private System.Windows.Forms.Button btnSave;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -26,8 +26,8 @@ namespace PolyTrader.Modules.CopyTrading.Ui
|
|||||||
{
|
{
|
||||||
InitializeComponent();
|
InitializeComponent();
|
||||||
|
|
||||||
cmbAccounts.SelectedIndexChanged += (_, _) => LoadSelected();
|
tsAccounts.SelectedIndexChanged += (_, _) => LoadSelected();
|
||||||
btnSave.Click += (_, _) => Save();
|
tsSave.Click += (_, _) => Save();
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>Injiziert die Abhängigkeiten (nach der DI-Auflösung) und füllt die Auswahl.</summary>
|
/// <summary>Injiziert die Abhängigkeiten (nach der DI-Auflösung) und füllt die Auswahl.</summary>
|
||||||
@@ -48,9 +48,9 @@ namespace PolyTrader.Modules.CopyTrading.Ui
|
|||||||
.Select(a => new AccountItem(a.AccountId, string.IsNullOrEmpty(a.Name) ? $"#{a.AccountId}" : $"{a.Name} (#{a.AccountId}){(a.IsDemo ? " · Demo" : "")}"))
|
.Select(a => new AccountItem(a.AccountId, string.IsNullOrEmpty(a.Name) ? $"#{a.AccountId}" : $"{a.Name} (#{a.AccountId}){(a.IsDemo ? " · Demo" : "")}"))
|
||||||
.ToList();
|
.ToList();
|
||||||
|
|
||||||
cmbAccounts.DisplayMember = nameof(AccountItem.Label);
|
tsAccounts.ComboBox.DisplayMember = nameof(AccountItem.Label);
|
||||||
cmbAccounts.ValueMember = nameof(AccountItem.Id);
|
tsAccounts.ComboBox.ValueMember = nameof(AccountItem.Id);
|
||||||
cmbAccounts.DataSource = items;
|
tsAccounts.ComboBox.DataSource = items;
|
||||||
|
|
||||||
if (items.Count > 0) LoadSelected();
|
if (items.Count > 0) LoadSelected();
|
||||||
else lblHint.Text = "Keine Accounts vorhanden.";
|
else lblHint.Text = "Keine Accounts vorhanden.";
|
||||||
@@ -58,7 +58,7 @@ namespace PolyTrader.Modules.CopyTrading.Ui
|
|||||||
|
|
||||||
private void LoadSelected()
|
private void LoadSelected()
|
||||||
{
|
{
|
||||||
if (_repo == null || cmbAccounts.SelectedItem is not AccountItem item) return;
|
if (_repo == null || tsAccounts.SelectedItem is not AccountItem item) return;
|
||||||
_current = _repo.Get(item.Id) ?? new CopyTradingAccountSettings { AccountId = item.Id };
|
_current = _repo.Get(item.Id) ?? new CopyTradingAccountSettings { AccountId = item.Id };
|
||||||
pgSettings.SelectedObject = _current;
|
pgSettings.SelectedObject = _current;
|
||||||
lblHint.Text = $"Einstellungen für Account #{item.Id}.";
|
lblHint.Text = $"Einstellungen für Account #{item.Id}.";
|
||||||
|
|||||||
+51
-36
@@ -17,9 +17,8 @@ namespace PolyTrader.Modules.CopyTrading.Ui
|
|||||||
|
|
||||||
private void InitializeComponent()
|
private void InitializeComponent()
|
||||||
{
|
{
|
||||||
this.pnlTop = new System.Windows.Forms.Panel();
|
this.toolbar = new System.Windows.Forms.ToolStrip();
|
||||||
this.lblSummary = new System.Windows.Forms.Label();
|
this.tsRefresh = new System.Windows.Forms.ToolStripButton();
|
||||||
this.btnRefresh = new System.Windows.Forms.Button();
|
|
||||||
this.dgvTrades = new System.Windows.Forms.DataGridView();
|
this.dgvTrades = new System.Windows.Forms.DataGridView();
|
||||||
this.colTradeId = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
this.colTradeId = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||||
this.colAccount = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
this.colAccount = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||||
@@ -34,37 +33,29 @@ namespace PolyTrader.Modules.CopyTrading.Ui
|
|||||||
this.colPnlPct = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
this.colPnlPct = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||||
this.colOpenedAt = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
this.colOpenedAt = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||||
this.colClosedAt = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
this.colClosedAt = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||||
this.pnlTop.SuspendLayout();
|
this.statusPanel = new System.Windows.Forms.Panel();
|
||||||
|
this.lblSummary = new System.Windows.Forms.Label();
|
||||||
|
this.toolbar.SuspendLayout();
|
||||||
((System.ComponentModel.ISupportInitialize)(this.dgvTrades)).BeginInit();
|
((System.ComponentModel.ISupportInitialize)(this.dgvTrades)).BeginInit();
|
||||||
|
this.statusPanel.SuspendLayout();
|
||||||
this.SuspendLayout();
|
this.SuspendLayout();
|
||||||
//
|
//
|
||||||
// pnlTop
|
// toolbar
|
||||||
//
|
//
|
||||||
this.pnlTop.Controls.Add(this.lblSummary);
|
this.toolbar.GripStyle = System.Windows.Forms.ToolStripGripStyle.Hidden;
|
||||||
this.pnlTop.Controls.Add(this.btnRefresh);
|
this.toolbar.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||||
this.pnlTop.Dock = System.Windows.Forms.DockStyle.Top;
|
this.tsRefresh});
|
||||||
this.pnlTop.Location = new System.Drawing.Point(0, 0);
|
this.toolbar.Location = new System.Drawing.Point(0, 0);
|
||||||
this.pnlTop.Name = "pnlTop";
|
this.toolbar.Name = "toolbar";
|
||||||
this.pnlTop.Size = new System.Drawing.Size(1100, 40);
|
this.toolbar.Size = new System.Drawing.Size(1100, 25);
|
||||||
this.pnlTop.TabIndex = 0;
|
this.toolbar.TabIndex = 0;
|
||||||
//
|
//
|
||||||
// lblSummary
|
// tsRefresh
|
||||||
//
|
//
|
||||||
this.lblSummary.AutoSize = true;
|
this.tsRefresh.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text;
|
||||||
this.lblSummary.Location = new System.Drawing.Point(148, 12);
|
this.tsRefresh.Name = "tsRefresh";
|
||||||
this.lblSummary.Name = "lblSummary";
|
this.tsRefresh.Size = new System.Drawing.Size(90, 22);
|
||||||
this.lblSummary.Size = new System.Drawing.Size(16, 15);
|
this.tsRefresh.Text = "Aktualisieren";
|
||||||
this.lblSummary.TabIndex = 1;
|
|
||||||
this.lblSummary.Text = "—";
|
|
||||||
//
|
|
||||||
// btnRefresh
|
|
||||||
//
|
|
||||||
this.btnRefresh.Location = new System.Drawing.Point(8, 6);
|
|
||||||
this.btnRefresh.Name = "btnRefresh";
|
|
||||||
this.btnRefresh.Size = new System.Drawing.Size(130, 28);
|
|
||||||
this.btnRefresh.TabIndex = 0;
|
|
||||||
this.btnRefresh.Text = "Aktualisieren";
|
|
||||||
this.btnRefresh.UseVisualStyleBackColor = true;
|
|
||||||
//
|
//
|
||||||
// dgvTrades
|
// dgvTrades
|
||||||
//
|
//
|
||||||
@@ -87,12 +78,12 @@ namespace PolyTrader.Modules.CopyTrading.Ui
|
|||||||
this.colOpenedAt,
|
this.colOpenedAt,
|
||||||
this.colClosedAt});
|
this.colClosedAt});
|
||||||
this.dgvTrades.Dock = System.Windows.Forms.DockStyle.Fill;
|
this.dgvTrades.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||||
this.dgvTrades.Location = new System.Drawing.Point(0, 40);
|
this.dgvTrades.Location = new System.Drawing.Point(0, 25);
|
||||||
this.dgvTrades.Name = "dgvTrades";
|
this.dgvTrades.Name = "dgvTrades";
|
||||||
this.dgvTrades.ReadOnly = true;
|
this.dgvTrades.ReadOnly = true;
|
||||||
this.dgvTrades.RowHeadersVisible = false;
|
this.dgvTrades.RowHeadersVisible = false;
|
||||||
this.dgvTrades.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect;
|
this.dgvTrades.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect;
|
||||||
this.dgvTrades.Size = new System.Drawing.Size(1100, 560);
|
this.dgvTrades.Size = new System.Drawing.Size(1100, 549);
|
||||||
this.dgvTrades.TabIndex = 1;
|
this.dgvTrades.TabIndex = 1;
|
||||||
//
|
//
|
||||||
// colTradeId
|
// colTradeId
|
||||||
@@ -199,25 +190,47 @@ namespace PolyTrader.Modules.CopyTrading.Ui
|
|||||||
this.colClosedAt.ReadOnly = true;
|
this.colClosedAt.ReadOnly = true;
|
||||||
this.colClosedAt.Width = 130;
|
this.colClosedAt.Width = 130;
|
||||||
//
|
//
|
||||||
|
// statusPanel
|
||||||
|
//
|
||||||
|
this.statusPanel.Controls.Add(this.lblSummary);
|
||||||
|
this.statusPanel.Dock = System.Windows.Forms.DockStyle.Bottom;
|
||||||
|
this.statusPanel.Location = new System.Drawing.Point(0, 574);
|
||||||
|
this.statusPanel.Name = "statusPanel";
|
||||||
|
this.statusPanel.Size = new System.Drawing.Size(1100, 26);
|
||||||
|
this.statusPanel.TabIndex = 2;
|
||||||
|
//
|
||||||
|
// lblSummary
|
||||||
|
//
|
||||||
|
this.lblSummary.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||||
|
this.lblSummary.Location = new System.Drawing.Point(0, 0);
|
||||||
|
this.lblSummary.Name = "lblSummary";
|
||||||
|
this.lblSummary.Padding = new System.Windows.Forms.Padding(8, 0, 0, 0);
|
||||||
|
this.lblSummary.Size = new System.Drawing.Size(1100, 26);
|
||||||
|
this.lblSummary.TabIndex = 0;
|
||||||
|
this.lblSummary.Text = "—";
|
||||||
|
this.lblSummary.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
|
||||||
|
//
|
||||||
// ClosedTradesView
|
// ClosedTradesView
|
||||||
//
|
//
|
||||||
this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 15F);
|
this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 15F);
|
||||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||||
this.Controls.Add(this.dgvTrades);
|
this.Controls.Add(this.dgvTrades);
|
||||||
this.Controls.Add(this.pnlTop);
|
this.Controls.Add(this.statusPanel);
|
||||||
|
this.Controls.Add(this.toolbar);
|
||||||
this.Name = "ClosedTradesView";
|
this.Name = "ClosedTradesView";
|
||||||
this.Size = new System.Drawing.Size(1100, 600);
|
this.Size = new System.Drawing.Size(1100, 600);
|
||||||
this.pnlTop.ResumeLayout(false);
|
this.toolbar.ResumeLayout(false);
|
||||||
this.pnlTop.PerformLayout();
|
this.toolbar.PerformLayout();
|
||||||
((System.ComponentModel.ISupportInitialize)(this.dgvTrades)).EndInit();
|
((System.ComponentModel.ISupportInitialize)(this.dgvTrades)).EndInit();
|
||||||
|
this.statusPanel.ResumeLayout(false);
|
||||||
this.ResumeLayout(false);
|
this.ResumeLayout(false);
|
||||||
|
this.PerformLayout();
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
private System.Windows.Forms.Panel pnlTop;
|
private System.Windows.Forms.ToolStrip toolbar;
|
||||||
private System.Windows.Forms.Button btnRefresh;
|
private System.Windows.Forms.ToolStripButton tsRefresh;
|
||||||
private System.Windows.Forms.Label lblSummary;
|
|
||||||
private System.Windows.Forms.DataGridView dgvTrades;
|
private System.Windows.Forms.DataGridView dgvTrades;
|
||||||
private System.Windows.Forms.DataGridViewTextBoxColumn colTradeId;
|
private System.Windows.Forms.DataGridViewTextBoxColumn colTradeId;
|
||||||
private System.Windows.Forms.DataGridViewTextBoxColumn colAccount;
|
private System.Windows.Forms.DataGridViewTextBoxColumn colAccount;
|
||||||
@@ -232,5 +245,7 @@ namespace PolyTrader.Modules.CopyTrading.Ui
|
|||||||
private System.Windows.Forms.DataGridViewTextBoxColumn colPnlPct;
|
private System.Windows.Forms.DataGridViewTextBoxColumn colPnlPct;
|
||||||
private System.Windows.Forms.DataGridViewTextBoxColumn colOpenedAt;
|
private System.Windows.Forms.DataGridViewTextBoxColumn colOpenedAt;
|
||||||
private System.Windows.Forms.DataGridViewTextBoxColumn colClosedAt;
|
private System.Windows.Forms.DataGridViewTextBoxColumn colClosedAt;
|
||||||
|
private System.Windows.Forms.Panel statusPanel;
|
||||||
|
private System.Windows.Forms.Label lblSummary;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -32,7 +32,7 @@ namespace PolyTrader.Modules.CopyTrading.Ui
|
|||||||
colOpenedAt.DefaultCellStyle.Format = "dd.MM.yyyy HH:mm";
|
colOpenedAt.DefaultCellStyle.Format = "dd.MM.yyyy HH:mm";
|
||||||
colClosedAt.DefaultCellStyle.Format = "dd.MM.yyyy HH:mm";
|
colClosedAt.DefaultCellStyle.Format = "dd.MM.yyyy HH:mm";
|
||||||
|
|
||||||
btnRefresh.Click += (_, _) => LoadData();
|
tsRefresh.Click += (_, _) => LoadData();
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>Injiziert die Abhängigkeiten (nach der DI-Auflösung) und lädt die Daten.</summary>
|
/// <summary>Injiziert die Abhängigkeiten (nach der DI-Auflösung) und lädt die Daten.</summary>
|
||||||
|
|||||||
@@ -0,0 +1,120 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<root>
|
||||||
|
<!--
|
||||||
|
Microsoft ResX Schema
|
||||||
|
|
||||||
|
Version 2.0
|
||||||
|
|
||||||
|
The primary goals of this format is to allow a simple XML format
|
||||||
|
that is mostly human readable. The generation and parsing of the
|
||||||
|
various data types are done through the TypeConverter classes
|
||||||
|
associated with the data types.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
|
||||||
|
... ado.net/XML headers & schema ...
|
||||||
|
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||||
|
<resheader name="version">2.0</resheader>
|
||||||
|
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||||
|
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||||
|
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||||
|
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||||
|
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||||
|
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||||
|
</data>
|
||||||
|
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||||
|
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||||
|
<comment>This is a comment</comment>
|
||||||
|
</data>
|
||||||
|
|
||||||
|
There are any number of "resheader" rows that contain simple
|
||||||
|
name/value pairs.
|
||||||
|
|
||||||
|
Each data row contains a name, and value. The row also contains a
|
||||||
|
type or mimetype. Type corresponds to a .NET class that support
|
||||||
|
text/value conversion through the TypeConverter architecture.
|
||||||
|
Classes that don't support this are serialized and stored with the
|
||||||
|
mimetype set.
|
||||||
|
|
||||||
|
The mimetype is used for serialized objects, and tells the
|
||||||
|
ResXResourceReader how to depersist the object. This is currently not
|
||||||
|
extensible. For a given mimetype the value must be set accordingly:
|
||||||
|
|
||||||
|
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||||
|
that the ResXResourceWriter will generate, however the reader can
|
||||||
|
read any of the formats listed below.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.binary.base64
|
||||||
|
value : The object must be serialized with
|
||||||
|
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.soap.base64
|
||||||
|
value : The object must be serialized with
|
||||||
|
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||||
|
value : The object must be serialized into a byte array
|
||||||
|
: using a System.ComponentModel.TypeConverter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
-->
|
||||||
|
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||||
|
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||||
|
<xsd:element name="root" msdata:IsDataSet="true">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:choice maxOccurs="unbounded">
|
||||||
|
<xsd:element name="metadata">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||||
|
<xsd:attribute name="type" type="xsd:string" />
|
||||||
|
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||||
|
<xsd:attribute ref="xml:space" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="assembly">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:attribute name="alias" type="xsd:string" />
|
||||||
|
<xsd:attribute name="name" type="xsd:string" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="data">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||||
|
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||||
|
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||||
|
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||||
|
<xsd:attribute ref="xml:space" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="resheader">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
</xsd:choice>
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
</xsd:schema>
|
||||||
|
<resheader name="resmimetype">
|
||||||
|
<value>text/microsoft-resx</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="version">
|
||||||
|
<value>2.0</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="reader">
|
||||||
|
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="writer">
|
||||||
|
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</resheader>
|
||||||
|
</root>
|
||||||
Reference in New Issue
Block a user