//--------------------------------------------------------------------- // 検索と置き換えの実行 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; }
//--------------------------------------------------------------------- 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); } } }
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":""; } } } }
//--------------------------------------------------------------------------- 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; }
//--------------------------------------------------------------------- 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; }
//--------------------------------------------------------------------------- // ワイヤー定義のセル位置のテキストを返す 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; } } }
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); }
//--------------------------------------------------------------------------- // ダイアログボックスを開く 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; }
//--------------------------------------------------------------------------- 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; } }
//--------------------------------------------------------------------- // 検索と置き換えの実行 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; }
//--------------------------------------------------------------------------- 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]); } }
//--------------------------------------------------------------------- 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; }