Exemple #1
0
//---------------------------------------------------------------------
// 検索と置き換えの実行
int __fastcall TValRepDlg::Execute(double &nd, double &od)
{
	double od1, od2;
	double nd1, nd2;

	int f = FALSE;
	RepSel->Enabled = FALSE;
	InvSel->Enabled = FALSE;
	EditOld->Text = StrDbl(od);
	EditNew->Text = StrDbl(od);
	Calc(od1, AnsiString(EditOld->Text).c_str());
	Calc(nd1, AnsiString(EditNew->Text).c_str());
	if( ShowModal() == IDOK ){
		Calc(od2, AnsiString(EditOld->Text).c_str());
		Calc(nd2, AnsiString(EditNew->Text).c_str());
		if( od1 != od2 ){
			od = od2;
		}
		if( nd1 != nd2 ){
			nd = nd2;
		}
		if( od != nd ) f = TRUE;
	}
	return f;
}
Exemple #2
0
//---------------------------------------------------------------------
void __fastcall TACalResDlg::GridDrawCell(TObject *Sender, int Col, int Row,
	TRect &Rect, TGridDrawState State)
{
	char	bf[64];
	char	bf2[32];

	Grid->Canvas->FillRect(Rect);
	int X = Rect.Left + 4;
	int Y = Rect.Top + 2;

	if( Row ){
		Row--;
		bf[0] = 0;
		switch(Col){
			case 0:		// No.
				sprintf(bf, "%u", Row + 1);
				break;
			case 1:		// Z
				strcpy(bf2, StrDbl2(ABS(mval[Row].CJX)));
				sprintf( bf, "%s %c j%s", StrDbl1(mval[Row].CRR), (mval[Row].CJX < 0.0)?'-':'+', bf2 );
				break;
			case 2:		// SWR
				strcpy(bf, StrDbl2(mval[Row].CSWR));
				break;
			case 3:		// Gain
				strcpy(bf, StrDbl2(mval[Row].CG));
				break;
			case 4:		// F/B
				strcpy(bf, StrDbl2(mval[Row].CFB));
				break;
			case 5:		// Elv
				strcpy(bf, StrDbl1(mval[Row].CELV));
				break;
			default:	// 評価値
				if( !pACal->atrg.TF ){
					strcpy(bf, StrDbl(mval[Row].AD[Col-6]));
				}
				else if( Col == 6 ){
					strcpy(bf, StrDbl(mval[Row].V/pACal->atrg.VM));
				}
				break;
		}
		Grid->Canvas->TextOut(X, Y, bf);
	}
	else {		// タイトル
		LPCSTR	_tt[]={
			"No.","Z(Ω)","SWR(50)","Ga(dBi)","F/B(dB)","Elev.°","評価値"
		};
		if( (Col < 6) || (pACal->atrg.TF) ){
			Grid->Canvas->TextOut(X, Y, _tt[Col]);
		}
		else {
			sprintf(bf, "V%d", Col - 5 );
			Grid->Canvas->TextOut(X, Y, bf);
		}
	}
}
Exemple #3
0
void __fastcall TACalInfoBox::AutoJXClick(TObject *Sender)
{
	double R, MRO;

	if( (Calc(R, AnsiString(EditSWRZ->Text).c_str()) == TRUE) && (R > 0.0) ){
		UnicodeString MTZ = R < 50 ? "50" : StrDbl(R*2);     //ja7ude 1.0
		if( InputQuery("MMANA", "整合目標のZを入力", MTZ) == TRUE ){
			if( (Calc(MRO, AnsiString(MTZ).c_str()) == TRUE) && (MRO > R) ){
				EditSWRJX->Text = StrDbl(-(sqrt((MRO/R)-1) * R));
			}
            else {
				EditSWRJX->Text = (MRO == R) ? "0":"";
            }
	    }
    }
}
Exemple #4
0
//---------------------------------------------------------------------------
void __fastcall TTriEditDlg::DispItem(int n)
{
	EnbCalc = 0;
	char bf[128];
	sprintf(bf, "%10.5lf,%10.5lf,%10.5lf", GetRmdVal(NowW.X1), GetRmdVal(NowW.Y1), GetRmdVal(NowW.Z1));
	NowBgn->Caption = bf;
	sprintf(bf, "%10.5lf,%10.5lf,%10.5lf", GetRmdVal(NowW.X2), GetRmdVal(NowW.Y2), GetRmdVal(NowW.Z2));
	NowEnd->Caption = bf;
	sprintf(bf, "%10.5lf,%10.5lf,%10.5lf", GetRmdVal(NewW.X1), GetRmdVal(NewW.Y1), GetRmdVal(NewW.Z1));
	NewBgn->Caption = bf;
	sprintf(bf, "%10.5lf,%10.5lf,%10.5lf", GetRmdVal(NewW.X2), GetRmdVal(NewW.Y2), GetRmdVal(NewW.Z2));
	NewEnd->Caption = bf;

	if( n != 0 ) EditLen->Text = StrDbl(GetRmdVal(WL));
	if( n != 1 ) EditXY->Text = StrDbl(XYD);
	if( n != 2 ) EditYZ->Text = StrDbl(YZD);
	EnbCalc = 1;
}
Exemple #5
0
//---------------------------------------------------------------------
void __fastcall TWireEditDlg::DispItem(int n)
{
	EnbCalc = 0;
	if( n != 0 ) EditX1->Text = StrDbl(GetRmdVal(NewW.X1));
	if( n != 1 ) EditY1->Text = StrDbl(GetRmdVal(NewW.Y1));
	if( n != 2 ) EditZ1->Text = StrDbl(GetRmdVal(NewW.Z1));
	if( n != 3 ) EditX2->Text = StrDbl(GetRmdVal(NewW.X2));
	if( n != 4 ) EditY2->Text = StrDbl(GetRmdVal(NewW.Y2));
	if( n != 5 ) EditZ2->Text = StrDbl(GetRmdVal(NewW.Z2));
	if( n != 6 ) EditR->Text = StrDbl(GetRmdValD(NewW.R * 1000.0));
	if( n != 7 ){
		EditSeg->Text = Seg2Str(NewW.SEG);
	}
	if( n != 10 ) EditLen->Text = StrDbl(GetRmdVal(WL));
	if( n != 11 ) EditHDeg->Text = StrDbl(XYD);
	if( n != 12 ) EditVDeg->Text = StrDbl(YZD);
	EnbCalc = 1;
	InitBtn->Enabled = memcmp(&NewW, &NowW, sizeof(NewW)) ? TRUE : FALSE;
}
Exemple #6
0
//---------------------------------------------------------------------------
// ワイヤー定義のセル位置のテキストを返す
void __fastcall TMediaDlgBox::GridGetText(LPSTR t, long Col, long Row)
{
	*t = 0;
	if( Row ){
		Row--;
		switch(Col){
			case 0:
				if( Row < lenv.mmax ){
					sprintf( t, "%3d", Row+1);
				}
				else {
					strcpy(t, "新規");
				}
				break;
			case 1:
				if( Row < lenv.mmax ){
					strcpy(t, StrDbl(lenv.rel[Row]));
				}
				break;
			case 2:
				if( Row < lenv.mmax ){
					strcpy(t, StrDbl(lenv.cond[Row]*1000.0));
				}
				break;
			case 3:
				if( Row < lenv.mmax ){
					strcpy(t, StrDbl(lenv.intval[Row]));
				}
				break;
			case 4:
				if( Row < lenv.mmax ){
					strcpy(t, StrDbl(lenv.height[Row]));
				}
				break;
		}
	}
}
Exemple #7
0
void __fastcall TACalInfoBox::UDSWRClick(TObject *Sender, TUDBtnType Button)
{
	double	d = 1.0;

	if( Calc(d, AnsiString(EditSWR->Text).c_str()) != TRUE ){
		d = 1.0;
    }
    if( d < 1.0 ) d = 1.0;
	if( Button == btNext ){
		d += 0.1;
    }
    else if( Button == btPrev ){
		d -= 0.1;
    }
	if( d < 1.0 ) d = 1.0;
    EditSWR->Text = StrDbl(d);
}
Exemple #8
0
//---------------------------------------------------------------------------
// ダイアログボックスを開く
int __fastcall TMediaDlgBox::Execute(void)
{
	char	bf[64];

	memcpy(&lenv, &env, sizeof(lenv));
	GScrFlag->Checked = lenv.mtype;
	sprintf(bf, "%u", lenv.gscrcnt );
	RadCnt->Text = bf;
	RadR->Text = StrDbl(lenv.gscrr);
	Grid->RowCount = lenv.mmax + 2;
	UpdateUIAll();
	if( ShowModal() == IDOK ){
		lenv.mtype = GScrFlag->Checked;
		CalcU(lenv.gscrcnt, AnsiString(RadCnt->Text).c_str());
		Calc(lenv.gscrr, AnsiString(RadR->Text).c_str() );
		memcpy(&env, &lenv, sizeof(lenv));
		return TRUE;
	}
	return FALSE;
}
Exemple #9
0
//---------------------------------------------------------------------------
void __fastcall TRxViewDlg::PupModePopup(TObject *Sender)
{
	PupMode->Items->Items[m_pRxSet->m_pDem->m_Type]->Checked = TRUE;
	BOOL f = m_pRxSet->Is170();
    NR->Visible = f;
    KRFFT->Visible = f;
    KRIIR->Visible = f;
	if( f ){
		if( m_pRxSet->m_RTTYFFT ){
	    	KRFFT->Checked = TRUE;
	    }
	    else {
	    	KRIIR->Checked = TRUE;
	    }
    }
	int spd = (m_pRxSet->m_Speed * 1000) + 0.5;
    f = FALSE;
	if( m_pRxSet->IsMFSK() ){
		switch(m_pRxSet->m_MFSK_TYPE){
			case typMFSK4:
				KS0->Checked = TRUE;
            	break;
			case typMFSK8:
				KS1->Checked = TRUE;
            	break;
			case typMFSK11:
				KS2->Checked = TRUE;
            	break;
            case typMFSK16:
				KS3->Checked = TRUE;
            	break;
            case typMFSK22:
				KS4->Checked = TRUE;
            	break;
            case typMFSK31:
				KS5->Checked = TRUE;
            	break;
            case typMFSK32:
				KS6->Checked = TRUE;
            	break;
            case typMFSK64:
				KS7->Checked = TRUE;
            	break;
        }
    }
	else if( m_pRxSet->IsRTTY() ){
		switch(spd){
			case 45450:
				KS0->Checked = TRUE;
            	break;
            case 75000:
				KS1->Checked = TRUE;
            	break;
            case 110000:
				KS2->Checked = TRUE;
            	break;
        }
    }
    else {
	switch(spd){
		case 15625:
        	KS0->Checked = TRUE;
            break;
		case 20000:
			KS1->Checked = TRUE;
            break;
        case 31250:
			KS2->Checked = TRUE;
            break;
        case 62500:
			KS3->Checked = TRUE;
            break;
        case 93750:
			KS4->Checked = TRUE;
            break;
        case 125000:
			KS5->Checked = TRUE;
            break;
        case 250000:
			KS6->Checked = TRUE;
            break;
        default:
			char bf[256];
            StrDbl(bf, m_pRxSet->m_Speed);
            strcat(bf, " bps");
			KS7->Caption = bf;
        	KS7->Checked = TRUE;
            f = TRUE;
            break;
    }
    }
    if( m_pRxSet->IsMFSK() ){
		KS0->Caption = "3.9063 baud, 32tones\tmfsk4";
		KS1->Caption = "7.8125 baud, 32tones\tmfsk8";
		KS2->Caption = "10.767 baud, 16tones\tmfsk11";
		KS3->Caption = "15.625 baud, 16tones\tmfsk16 (Standard)";
		KS4->Caption = "21.533 baud, 16tones\tmfsk22";
		KS5->Caption = "31.25 baud, 8tones\tmfsk31";
		KS6->Caption = "31.25 baud, 16tones\tmfsk32";
		KS7->Caption = "62.5 baud, 16tones\tmfsk64";
		KS3->Visible = TRUE;
		KS4->Visible = TRUE;
		KS5->Visible = TRUE;
		KS6->Visible = TRUE;
        KS7->Visible = TRUE;
    }
	else if( m_pRxSet->IsRTTY() ){
		KS0->Caption = "45.45 baud\tStandard RTTY";
		KS1->Caption = "75.0 baud";
		KS2->Caption = "110.0 baud";
		KS3->Visible = FALSE;
		KS4->Visible = FALSE;
		KS5->Visible = FALSE;
		KS6->Visible = FALSE;
	    KS7->Visible = f;
    }
    else {
		KS0->Caption = "15.625 bps";
		KS1->Caption = "20.0 bps";
		KS2->Caption = "31.25 bps";
		KS3->Caption = "62.5 bps";
        KS4->Caption = "93.75 bps";
        KS5->Caption = "125.0 bps";
        KS6->Caption = "250.0 bps";
		KS3->Visible = TRUE;
		KS4->Visible = TRUE;
		KS5->Visible = TRUE;
		KS6->Visible = TRUE;
	    KS7->Visible = f;
    }
}
Exemple #10
0
//---------------------------------------------------------------------
// 検索と置き換えの実行
int __fastcall TValRepDlg::Execute(ANTDEF *ap, int Row, int Col)
{
	Row--;
	Col--;
	WDEF *wp = &ap->wdef[Row];
	double d, nd, od, dd;
	int f = FALSE;
	switch(Col){
		case 0:		// X1
			d = wp->X1;
			dd = GetRmdVal(d);
			break;
		case 1:		// Y1
			d = wp->Y1;
			dd = GetRmdVal(d);
			break;
		case 2:		// Z1
			d = wp->Z1;
			dd = GetRmdVal(d);
			break;
		case 3:		// X2
			d = wp->X2;
			dd = GetRmdVal(d);
			break;
		case 4:		// Y2
			d = wp->Y2;
			dd = GetRmdVal(d);
			break;
		case 5:		// Z2
			d = wp->Z2;
			dd = GetRmdVal(d);
			break;
		case 6:		// R
			RepSel->ItemIndex = 0;
			InvSel->Checked = FALSE;
			RepSel->Enabled = FALSE;
			InvSel->Enabled = FALSE;
			d = wp->R;
			dd = GetRmdValD(d * 1000.0);
			break;
		case 7:		// Seg
			RepSel->ItemIndex = 0;
			InvSel->Checked = FALSE;
			RepSel->Enabled = FALSE;
			InvSel->Enabled = FALSE;
			EditOld->Text = Seg2Str(wp->SEG);
			EditNew->Text = Seg2Str(wp->SEG);
			break;
	}
	if( Col != 7 ){
		EditOld->Text = StrDbl(dd);
		EditNew->Text = StrDbl(dd);
		Calc(dd, AnsiString(EditOld->Text).c_str());
	}
	if( ShowModal() == IDOK ){
		int i;
		wp = ap->wdef;
		if( Col == 7 ){				// SEGの変更
			int oseg, nseg;
			if( Str2Seg(oseg, AnsiString(EditOld->Text).c_str()) != TRUE ) return FALSE;
			if( Str2Seg(nseg, AnsiString(EditNew->Text).c_str()) != TRUE ) return FALSE;
			if( oseg != nseg ){
				for( i = 0; i < ap->wmax; i++, wp++ ){
					if( wp->SEG == oseg ){
						wp->SEG = nseg;
						f = TRUE;
					}
				}
			}
			return f;
		}
		nd = d;
		Calc(od, AnsiString(EditOld->Text).c_str());
		Calc(nd, AnsiString(EditNew->Text).c_str());
		if( od == nd ) return FALSE;
		if( Col == 6 ){				// 半径の変更
			if( dd != od ){
				d = SetRmdValD(od)/1000.0;
			}
			for( i = 0; i < ap->wmax; i++, wp++ ){
				if( wp->R == d ){
					wp->R = SetRmdValD(nd)/1000.0;
					f = TRUE;
				}
			}
		}
		else {
			if( dd != od ){
				d = SetRmdVal(od);
			}
			nd = SetRmdVal(nd);
			for( i = 0; i < ap->wmax; i++, wp++ ){
				switch(RepSel->ItemIndex){
					case 0:
						RepJob(f, wp->X1, d, nd);
						RepJob(f, wp->Y1, d, nd);
						RepJob(f, wp->Z1, d, nd);
						RepJob(f, wp->X2, d, nd);
						RepJob(f, wp->Y2, d, nd);
						RepJob(f, wp->Z2, d, nd);
						break;
					case 1:
						RepJob(f, wp->X1, d, nd);
						RepJob(f, wp->X2, d, nd);
						break;
					case 2:
						RepJob(f, wp->Y1, d, nd);
						RepJob(f, wp->Y2, d, nd);
						break;
					case 3:
						RepJob(f, wp->Z1, d, nd);
						RepJob(f, wp->Z2, d, nd);
						break;
				}
			}
		}
	}
	return f;
}
Exemple #11
0
//---------------------------------------------------------------------------
void __fastcall TResCmpDlg::GridDrawCell(TObject *Sender, int Col, int Row,
	TRect &Rect, TGridDrawState State)
{
	LPCSTR	_ty[]={"自由","完全GND","リアルGND"};
	char	bf[256];

	if( (Row >= 1) && (Col >= 1) && (ActiveControl != Grid) ){
		Grid->Canvas->Brush->Color = clWindow;
		Grid->Canvas->Font->Color = clBlack;
	}
	Grid->Canvas->FillRect(Rect);
	int X = Rect.Left + 4;
	int Y = Rect.Top + 2;

	if( Row ){
		if( !Cnt ) return;
		Row--;
		bf[0] = 0;
		RESL	*rp = Res[Row].GetResP();
		double	g;
		switch(Col){
			case 0:
				sprintf( bf, "%d", Row + 1 );
				break;
			case 1:
				strcpy(bf, StrDbl3(rp->FQ));
				break;
			case 2:
				strcpy(bf, StrDbl3(rp->R));
				break;
			case 3:
				strcpy(bf, StrDbl3(rp->JX));
				break;
			case 4:
				if( (rp->RO != env.RO)||(rp->JXO != env.JXO) ){
					strcpy(bf, StrDbl2(CalcSWR(rp->R, rp->JX, env.RO, env.JXO)));
				}
				else {
					strcpy(bf, StrDbl2(rp->SWR));
				}
				break;
			case 5:	// 相対利得
				if( rp->GAIN != NULLV ){
					if( rp->TYPE ){
						strcpy(bf, "---");
					}
					else {
						g = rp->GAIN - 2.15;
						if( g < -999 ) g = -999;
						strcpy(bf, StrDbl2(g));
					}
				}
				break;
			case 6:	// 絶対利得
				g = rp->GAIN;
				if( g < -999 ) g = -999;
				strcpy(bf, StrDbl2(g));
				break;
			case 7:
				strcpy(bf, StrDbl2(rp->FB));
				break;
			case 8:
				strcpy(bf, StrDbl1(rp->ELV));
				break;
			case 9:		// 条件
				strcpy(bf, _ty[rp->TYPE]);
				break;
			case 10:	// 地上高
				if( rp->TYPE ){
					strcpy(bf, StrDbl(rp->HEIGHT));
				}
				break;
			case 11:	// 偏ぱ
				strcpy(bf, rp->MAXVP > rp->MAXHP ? "垂直":"水平");
				break;
			case 12:	// 名前
				strcpy(bf, Fname[Row].c_str());
				SetFileName(bf);
				break;
			case 13:	// 名前
				strcpy(bf, Res[Row].Name);
				break;
		}
		if( pColorTable != NULL ){
			Grid->Canvas->Font->Color = pColorTable[Row];
		}
		Grid->Canvas->TextOut(X, Y, bf);
	}
	else {		// タイトル
		LPCSTR	_tt[]={
			"No.","Freq","R","jX","SWR","Gh","Ga","F/B","Elev.","条件","地上高","偏波","ファイル","名前"
		};
		Grid->Canvas->TextOut(X, Y, _tt[Col]);
	}
}
Exemple #12
0
//---------------------------------------------------------------------
int __fastcall TACalInfoBox::Execute(CACal *p)
{
	ATRG &at = p->atrg;
	double d;

    UDSWR->Associate = EditSWR;
	UDGain->Position = short(at.MaxGain);
	UDFB->Position = short(at.MaxFB);
	UDJX->Position = short(at.MinJX);
	UDSWR->Associate = NULL;
	UDSWR->Position = 50;
    EditSWR->Text = StrDbl(at.MinSWR);
	MatchSel->ItemIndex = at.Match;
	UDFBH->Position = short(env.fbr & 0x0000ffff);
	UDFBV->Position = short((env.fbr >> 16) & 0x0000ffff);
	EditSWRZ->Text = StrDbl(env.RO);
	EditSWRJX->Text = StrDbl(env.JXO);
	EditTergR->Text = (at.TergR == NULLV) ? "*" : StrDbl(at.TergR);
    EditTergJX->Text = (at.TergJX == NULLV) ? "*" : StrDbl(at.TergJX);
	if( at.IType ){
		RBIMIN->Checked = TRUE;
    }
    else {
		RBIMAX->Checked = TRUE;
    }
	EditCur->Text = at.IPLUS;
	UpdateUIEditTerg();
	if( ShowModal() == IDOK ){
		if( Calc(d, AnsiString(EditGain->Text).c_str()) == TRUE ){
			if( d > 0.0 ){
				at.MaxGain = d;
			}
		}
		if( Calc(d, AnsiString(EditFB->Text).c_str()) == TRUE ){
			if( d > 0.0 ){
				at.MaxFB = d;
			}
		}
		if( Calc(d, AnsiString(EditJX->Text).c_str()) == TRUE ){
			if( d >= 0.0 ){
				at.MinJX = d;
			}
		}
		if( Calc(d, AnsiString(EditSWR->Text).c_str()) == TRUE ){
			if( d >= 1.0 ){
				at.MinSWR = d;
            }
        }
		at.Match = MatchSel->ItemIndex;
		if( *EditTergR->Text.c_str() == '*' ){
			at.TergR = NULLV;
        }
		else if( Calc(d, AnsiString(EditTergR->Text).c_str()) == TRUE ){
			if( d >= 0.0 ){
				at.TergR = d;
            }
        }
		if( *AnsiString(EditTergJX->Text).c_str() == '*' ){
			at.TergJX = NULLV;
		}
		else if( Calc(d, AnsiString(EditTergJX->Text).c_str()) == TRUE ){
			at.TergJX = d;
        }
		env.fbr = UDFBH->Position;
		env.fbr |= UDFBV->Position << 16;
		if( Calc(d, AnsiString(EditSWRZ->Text).c_str()) == TRUE ){
			if( d > 0.0 ){
				env.RO = d;
			}
		}
		if( Calc(d, AnsiString(EditSWRJX->Text).c_str()) == TRUE ){
			env.JXO = d;
		}
		at.IType = RBIMIN->Checked;
		ZSCopy(at.IPLUS, AnsiString(EditCur->Text).c_str(), 8);
		return TRUE;
    }
	return FALSE;
}