📄 productresultlist.h
字号:
#pragma once
#include "DBBase.h"
#include "infClass.h"
using namespace System;
using namespace System::ComponentModel;
using namespace System::Collections;
using namespace System::Windows::Forms;
using namespace System::Data;
using namespace System::Drawing;
namespace FAP
{
public __gc class DataGridTextColumnInherit : public DataGridTextBoxColumn {
private:
SolidBrush* trueBrush;
SolidBrush* falseBrush;
DataColumn* expressionColumn;
static int count = 0;
public:
DataGridTextColumnInherit() : DataGridTextBoxColumn() {
trueBrush = dynamic_cast<SolidBrush*>(Brushes::Yellow);
falseBrush = dynamic_cast<SolidBrush*>(Brushes::LightSlateGray);
expressionColumn = 0;
count ++;
}
__property Color get_FalseColor() {
return falseBrush->Color;
}
__property void set_FalseColor(Color value) {
falseBrush = new System::Drawing::SolidBrush(value);
Invalidate();
}
__property Color get_TrueColor() {
return trueBrush->Color;
}
__property void set_TrueColor(Color value) {
trueBrush = new System::Drawing::SolidBrush(value);
Invalidate();
}
// This will work only with a DataSet or DataTable.
// The code is not compatible with IBindingList* implementations.
__property String* get_Expression() {
return this->expressionColumn == 0 ? String::Empty :
this->expressionColumn->Expression;
}
__property void set_Expression(String* value) {
if (expressionColumn == 0)
AddExpressionColumn(value);
else
expressionColumn->Expression = value;
if (expressionColumn != 0 &&
expressionColumn->Expression->Equals(value))
return;
Invalidate();
}
private:
void AddExpressionColumn(String* value) {
// Get the grid's data source. First check for a 0
// table or data grid.
if (this->DataGridTableStyle == 0 ||
this->DataGridTableStyle->DataGrid == 0)
return;
DataGrid* myGrid = this->DataGridTableStyle->DataGrid;
DataView* myDataView = dynamic_cast<DataView*>(
(dynamic_cast<CurrencyManager*>(
myGrid->BindingContext->Item[myGrid->DataSource,
myGrid->DataMember]))->List);
// This works only with System::Data::DataTable.
if (myDataView == 0)
return;
// If the user already added a column with the name
// then exit. Otherwise, add the column and set the
// expression to the value passed to this function.
DataColumn* col =
myDataView->Table->Columns->Item[S"__Computed__Column__"];
if (col != 0)
return;
col = new DataColumn(String::Concat(
S"__Computed__Column__", __box(count)));
myDataView->Table->Columns->Add(col);
col->Expression = value;
expressionColumn = col;
}
// the OnPaint method to paint the cell based on the expression.
protected:
void Paint(Graphics* g, Rectangle bounds,
CurrencyManager* source, int rowNum,
Brush* backBrush, Brush* foreBrush,
bool alignToRight) {
bool trueExpression = false;
bool hasExpression = false;
DataRowView* drv = dynamic_cast<DataRowView*>(source->List->Item[rowNum]);
hasExpression = this->expressionColumn != 0 &&
this->expressionColumn->Expression != 0 &&
!this->expressionColumn->Expression->Equals(String::Empty);
Console::WriteLine(String::Format(S"hasExpressionValue {0}", __box(hasExpression)));
// Get the value from the expression column.
// For simplicity, we assume a True/False value for the
// expression column.
if (hasExpression) {
Object* expr = drv->Row->Item[expressionColumn->ColumnName];
trueExpression = expr->Equals(S"True");
}
// Let the DataGridBoolColumn do the painting.
if (!hasExpression)
DataGridTextBoxColumn::Paint(g, bounds, source, rowNum,
backBrush, foreBrush, alignToRight);
// Paint using the expression color for true or false, as calculated.
if (trueExpression)
DataGridTextBoxColumn::Paint(g, bounds, source, rowNum,
trueBrush, foreBrush, alignToRight);
else
DataGridTextBoxColumn::Paint(g, bounds, source, rowNum,
falseBrush, foreBrush, alignToRight);
}
};
public __gc class DataGridBoolColumnInherit : public DataGridTextBoxColumn {
private:
SolidBrush* trueBrush;
SolidBrush* falseBrush;
DataColumn* expressionColumn;
static int count = 0;
public:
DataGridBoolColumnInherit() : DataGridTextBoxColumn() {
trueBrush = dynamic_cast<SolidBrush*>(Brushes::Yellow);
falseBrush = dynamic_cast<SolidBrush*>(Brushes::CadetBlue);
expressionColumn = 0;
count ++;
}
__property Color get_FalseColor() {
return falseBrush->Color;
}
__property void set_FalseColor(Color value) {
falseBrush = new System::Drawing::SolidBrush(value);
Invalidate();
}
__property Color get_TrueColor() {
return trueBrush->Color;
}
__property void set_TrueColor(Color value) {
trueBrush = new System::Drawing::SolidBrush(value);
Invalidate();
}
// This will work only with a DataSet or DataTable.
// The code is not compatible with IBindingList* implementations.
__property String* get_Expression() {
return this->expressionColumn == 0 ? String::Empty :
this->expressionColumn->Expression;
}
__property void set_Expression(String* value) {
if (expressionColumn == 0)
AddExpressionColumn(value);
else
expressionColumn->Expression = value;
if (expressionColumn != 0 &&
expressionColumn->Expression->Equals(value))
return;
Invalidate();
}
private:
void AddExpressionColumn(String* value) {
// Get the grid's data source. First check for a 0
// table or data grid.
if (this->DataGridTableStyle == 0 ||
this->DataGridTableStyle->DataGrid == 0)
return;
DataGrid* myGrid = this->DataGridTableStyle->DataGrid;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -