1*cdf0e10cSrcweir /************************************************************************* 2*cdf0e10cSrcweir * 3*cdf0e10cSrcweir * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4*cdf0e10cSrcweir * 5*cdf0e10cSrcweir * Copyright 2000, 2010 Oracle and/or its affiliates. 6*cdf0e10cSrcweir * 7*cdf0e10cSrcweir * OpenOffice.org - a multi-platform office productivity suite 8*cdf0e10cSrcweir * 9*cdf0e10cSrcweir * This file is part of OpenOffice.org. 10*cdf0e10cSrcweir * 11*cdf0e10cSrcweir * OpenOffice.org is free software: you can redistribute it and/or modify 12*cdf0e10cSrcweir * it under the terms of the GNU Lesser General Public License version 3 13*cdf0e10cSrcweir * only, as published by the Free Software Foundation. 14*cdf0e10cSrcweir * 15*cdf0e10cSrcweir * OpenOffice.org is distributed in the hope that it will be useful, 16*cdf0e10cSrcweir * but WITHOUT ANY WARRANTY; without even the implied warranty of 17*cdf0e10cSrcweir * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 18*cdf0e10cSrcweir * GNU Lesser General Public License version 3 for more details 19*cdf0e10cSrcweir * (a copy is included in the LICENSE file that accompanied this code). 20*cdf0e10cSrcweir * 21*cdf0e10cSrcweir * You should have received a copy of the GNU Lesser General Public License 22*cdf0e10cSrcweir * version 3 along with OpenOffice.org. If not, see 23*cdf0e10cSrcweir * <http://www.openoffice.org/license.html> 24*cdf0e10cSrcweir * for a copy of the LGPLv3 License. 25*cdf0e10cSrcweir * 26*cdf0e10cSrcweir ************************************************************************/ 27*cdf0e10cSrcweir 28*cdf0e10cSrcweir // MARKER(update_precomp.py): autogen include statement, do not remove 29*cdf0e10cSrcweir #include "precompiled_sc.hxx" 30*cdf0e10cSrcweir 31*cdf0e10cSrcweir // System - Includes --------------------------------------------------------- 32*cdf0e10cSrcweir 33*cdf0e10cSrcweir 34*cdf0e10cSrcweir 35*cdf0e10cSrcweir // INCLUDE ------------------------------------------------------------------- 36*cdf0e10cSrcweir 37*cdf0e10cSrcweir #include "reffact.hxx" 38*cdf0e10cSrcweir #include "document.hxx" 39*cdf0e10cSrcweir #include "scresid.hxx" 40*cdf0e10cSrcweir #include "globstr.hrc" 41*cdf0e10cSrcweir #include "crnrdlg.hrc" 42*cdf0e10cSrcweir #include "docsh.hxx" 43*cdf0e10cSrcweir 44*cdf0e10cSrcweir #define _CRNRDLG_CXX 45*cdf0e10cSrcweir #include "crnrdlg.hxx" 46*cdf0e10cSrcweir #undef _CRNRDLG_CXX 47*cdf0e10cSrcweir #include <vcl/msgbox.hxx> 48*cdf0e10cSrcweir 49*cdf0e10cSrcweir 50*cdf0e10cSrcweir //============================================================================ 51*cdf0e10cSrcweir 52*cdf0e10cSrcweir #define ERRORBOX(s) ErrorBox(this,WinBits(WB_OK|WB_DEF_OK),s).Execute() 53*cdf0e10cSrcweir #define QUERYBOX(m) QueryBox(this,WinBits(WB_YES_NO|WB_DEF_YES),m).Execute() 54*cdf0e10cSrcweir 55*cdf0e10cSrcweir const sal_uLong nEntryDataCol = 0; 56*cdf0e10cSrcweir const sal_uLong nEntryDataRow = 1; 57*cdf0e10cSrcweir const sal_uLong nEntryDataDelim = 2; 58*cdf0e10cSrcweir 59*cdf0e10cSrcweir 60*cdf0e10cSrcweir //============================================================================ 61*cdf0e10cSrcweir // class ScColRowNameRangesDlg 62*cdf0e10cSrcweir 63*cdf0e10cSrcweir 64*cdf0e10cSrcweir /************************************************************************* 65*cdf0e10cSrcweir #* Member: ScColRowNameRangesDlg Datum:04.09.97 66*cdf0e10cSrcweir #*------------------------------------------------------------------------ 67*cdf0e10cSrcweir #* 68*cdf0e10cSrcweir #* Klasse: ScColRowNameRangesDlg 69*cdf0e10cSrcweir #* 70*cdf0e10cSrcweir #* Funktion: Konstruktor der Klasse ScColRowNameRangesDlg. 71*cdf0e10cSrcweir #* Initialisieren der Klassen- Mitglieder, 72*cdf0e10cSrcweir #* Uebernahme der Range- Angaben und Aufruf 73*cdf0e10cSrcweir #* der eigentlichen Initialisierungsroutine 74*cdf0e10cSrcweir #* 75*cdf0e10cSrcweir #* Input: Sfx- Verknuepfungen 76*cdf0e10cSrcweir #* Parent- Window 77*cdf0e10cSrcweir #* SCViewData 78*cdf0e10cSrcweir #* 79*cdf0e10cSrcweir #* Output: --- 80*cdf0e10cSrcweir #* 81*cdf0e10cSrcweir #************************************************************************/ 82*cdf0e10cSrcweir 83*cdf0e10cSrcweir ScColRowNameRangesDlg::ScColRowNameRangesDlg( SfxBindings* pB, 84*cdf0e10cSrcweir SfxChildWindow* pCW, 85*cdf0e10cSrcweir Window* pParent, 86*cdf0e10cSrcweir ScViewData* ptrViewData ) 87*cdf0e10cSrcweir 88*cdf0e10cSrcweir : ScAnyRefDlg ( pB, pCW, pParent, RID_SCDLG_COLROWNAMERANGES ), 89*cdf0e10cSrcweir // 90*cdf0e10cSrcweir aFlAssign ( this, ScResId( FL_ASSIGN ) ), 91*cdf0e10cSrcweir aLbRange ( this, ScResId( LB_RANGE ) ), 92*cdf0e10cSrcweir 93*cdf0e10cSrcweir aEdAssign ( this, this, ScResId( ED_AREA ) ), 94*cdf0e10cSrcweir aRbAssign ( this, ScResId( RB_AREA ), &aEdAssign, this ), 95*cdf0e10cSrcweir aBtnColHead ( this, ScResId( BTN_COLHEAD ) ), 96*cdf0e10cSrcweir aBtnRowHead ( this, ScResId( BTN_ROWHEAD ) ), 97*cdf0e10cSrcweir aFtAssign2 ( this, ScResId( FT_DATA_LABEL ) ), 98*cdf0e10cSrcweir aEdAssign2 ( this, this, ScResId( ED_DATA ) ), 99*cdf0e10cSrcweir aRbAssign2 ( this, ScResId( RB_DATA ), &aEdAssign2, this ), 100*cdf0e10cSrcweir 101*cdf0e10cSrcweir aBtnOk ( this, ScResId( BTN_OK ) ), 102*cdf0e10cSrcweir aBtnCancel ( this, ScResId( BTN_CANCEL ) ), 103*cdf0e10cSrcweir aBtnHelp ( this, ScResId( BTN_HELP ) ), 104*cdf0e10cSrcweir aBtnAdd ( this, ScResId( BTN_ADD ) ), 105*cdf0e10cSrcweir aBtnRemove ( this, ScResId( BTN_REMOVE ) ), 106*cdf0e10cSrcweir 107*cdf0e10cSrcweir pViewData ( ptrViewData ), 108*cdf0e10cSrcweir pDoc ( ptrViewData->GetDocument() ), 109*cdf0e10cSrcweir 110*cdf0e10cSrcweir pEdActive ( NULL ), 111*cdf0e10cSrcweir bDlgLostFocus ( sal_False ) 112*cdf0e10cSrcweir { 113*cdf0e10cSrcweir xColNameRanges = pDoc->GetColNameRanges()->Clone(); 114*cdf0e10cSrcweir xRowNameRanges = pDoc->GetRowNameRanges()->Clone(); 115*cdf0e10cSrcweir Init(); 116*cdf0e10cSrcweir FreeResource(); 117*cdf0e10cSrcweir 118*cdf0e10cSrcweir aRbAssign.SetAccessibleRelationMemberOf(&aEdAssign); 119*cdf0e10cSrcweir aRbAssign2.SetAccessibleRelationMemberOf(&aEdAssign); 120*cdf0e10cSrcweir } 121*cdf0e10cSrcweir 122*cdf0e10cSrcweir 123*cdf0e10cSrcweir /************************************************************************* 124*cdf0e10cSrcweir #* Member: ~ScColRowNameRangesDlg Datum:04.09.97 125*cdf0e10cSrcweir #*------------------------------------------------------------------------ 126*cdf0e10cSrcweir #* 127*cdf0e10cSrcweir #* Klasse: ScColRowNameRangesDlg 128*cdf0e10cSrcweir #* 129*cdf0e10cSrcweir #* Funktion: Destruktor der Klasse 130*cdf0e10cSrcweir #* 131*cdf0e10cSrcweir #* Input: --- 132*cdf0e10cSrcweir #* 133*cdf0e10cSrcweir #* Output: --- 134*cdf0e10cSrcweir #* 135*cdf0e10cSrcweir #************************************************************************/ 136*cdf0e10cSrcweir 137*cdf0e10cSrcweir __EXPORT ScColRowNameRangesDlg::~ScColRowNameRangesDlg() 138*cdf0e10cSrcweir { 139*cdf0e10cSrcweir } 140*cdf0e10cSrcweir 141*cdf0e10cSrcweir 142*cdf0e10cSrcweir /************************************************************************* 143*cdf0e10cSrcweir #* Member: Init Datum:04.09.97 144*cdf0e10cSrcweir #*------------------------------------------------------------------------ 145*cdf0e10cSrcweir #* 146*cdf0e10cSrcweir #* Klasse: ScColRowNameRangesDlg 147*cdf0e10cSrcweir #* 148*cdf0e10cSrcweir #* Funktion: Initialisierungs- Routine: 149*cdf0e10cSrcweir #* Umlenken der Event- Handler und einstellen der 150*cdf0e10cSrcweir #* Startparameter. 151*cdf0e10cSrcweir #* 152*cdf0e10cSrcweir #* Input: --- 153*cdf0e10cSrcweir #* 154*cdf0e10cSrcweir #* Output: --- 155*cdf0e10cSrcweir #* 156*cdf0e10cSrcweir #************************************************************************/ 157*cdf0e10cSrcweir 158*cdf0e10cSrcweir void ScColRowNameRangesDlg::Init() 159*cdf0e10cSrcweir { 160*cdf0e10cSrcweir SCCOL nStartCol = 0; 161*cdf0e10cSrcweir SCROW nStartRow = 0; 162*cdf0e10cSrcweir SCTAB nStartTab = 0; 163*cdf0e10cSrcweir SCCOL nEndCol = 0; 164*cdf0e10cSrcweir SCROW nEndRow = 0; 165*cdf0e10cSrcweir SCTAB nEndTab = 0; 166*cdf0e10cSrcweir 167*cdf0e10cSrcweir aBtnOk.SetClickHdl ( LINK( this, ScColRowNameRangesDlg, OkBtnHdl ) ); 168*cdf0e10cSrcweir aBtnCancel.SetClickHdl ( LINK( this, ScColRowNameRangesDlg, CancelBtnHdl ) ); 169*cdf0e10cSrcweir aBtnAdd.SetClickHdl ( LINK( this, ScColRowNameRangesDlg, AddBtnHdl ) ); 170*cdf0e10cSrcweir aBtnRemove.SetClickHdl ( LINK( this, ScColRowNameRangesDlg, RemoveBtnHdl ) ); 171*cdf0e10cSrcweir aLbRange.SetSelectHdl ( LINK( this, ScColRowNameRangesDlg, Range1SelectHdl ) ); 172*cdf0e10cSrcweir aEdAssign.SetModifyHdl ( LINK( this, ScColRowNameRangesDlg, Range1DataModifyHdl ) ); 173*cdf0e10cSrcweir aBtnColHead.SetClickHdl ( LINK( this, ScColRowNameRangesDlg, ColClickHdl ) ); 174*cdf0e10cSrcweir aBtnRowHead.SetClickHdl ( LINK( this, ScColRowNameRangesDlg, RowClickHdl ) ); 175*cdf0e10cSrcweir aEdAssign2.SetModifyHdl ( LINK( this, ScColRowNameRangesDlg, Range2DataModifyHdl ) ); 176*cdf0e10cSrcweir 177*cdf0e10cSrcweir Link aLink = LINK( this, ScColRowNameRangesDlg, GetFocusHdl ); 178*cdf0e10cSrcweir aEdAssign.SetGetFocusHdl( aLink ); 179*cdf0e10cSrcweir aRbAssign.SetGetFocusHdl( aLink ); 180*cdf0e10cSrcweir aEdAssign2.SetGetFocusHdl( aLink ); 181*cdf0e10cSrcweir aRbAssign2.SetGetFocusHdl( aLink ); 182*cdf0e10cSrcweir 183*cdf0e10cSrcweir aLink = LINK( this, ScColRowNameRangesDlg, LoseFocusHdl ); 184*cdf0e10cSrcweir aEdAssign.SetLoseFocusHdl( aLink ); 185*cdf0e10cSrcweir aRbAssign.SetLoseFocusHdl( aLink ); 186*cdf0e10cSrcweir aEdAssign2.SetLoseFocusHdl( aLink ); 187*cdf0e10cSrcweir aRbAssign2.SetLoseFocusHdl( aLink ); 188*cdf0e10cSrcweir 189*cdf0e10cSrcweir pEdActive = &aEdAssign; 190*cdf0e10cSrcweir 191*cdf0e10cSrcweir UpdateNames(); 192*cdf0e10cSrcweir 193*cdf0e10cSrcweir if ( pViewData && pDoc ) 194*cdf0e10cSrcweir { 195*cdf0e10cSrcweir pViewData->GetSimpleArea( nStartCol, nStartRow, nStartTab, 196*cdf0e10cSrcweir nEndCol, nEndRow, nEndTab ); 197*cdf0e10cSrcweir SetColRowData( ScRange( ScAddress( nStartCol, nStartRow, nStartTab ), 198*cdf0e10cSrcweir ScAddress( nEndCol, nEndRow, nEndTab ) ) ); 199*cdf0e10cSrcweir } 200*cdf0e10cSrcweir else 201*cdf0e10cSrcweir { 202*cdf0e10cSrcweir aBtnColHead.Check( sal_True ); 203*cdf0e10cSrcweir aBtnRowHead.Check( sal_False ); 204*cdf0e10cSrcweir aEdAssign.SetText( EMPTY_STRING ); 205*cdf0e10cSrcweir aEdAssign2.SetText( EMPTY_STRING ); 206*cdf0e10cSrcweir } 207*cdf0e10cSrcweir 208*cdf0e10cSrcweir aLbRange.SetBorderStyle( WINDOW_BORDER_MONO ); 209*cdf0e10cSrcweir aBtnColHead.Enable(); 210*cdf0e10cSrcweir aBtnRowHead.Enable(); 211*cdf0e10cSrcweir aEdAssign.Enable(); 212*cdf0e10cSrcweir aEdAssign.GrabFocus(); 213*cdf0e10cSrcweir aRbAssign.Enable(); 214*cdf0e10cSrcweir //@BugID 54702 Enablen/Disablen nur noch in Basisklasse 215*cdf0e10cSrcweir //SFX_APPWINDOW->Enable(); // Ref-Feld hat Focus 216*cdf0e10cSrcweir 217*cdf0e10cSrcweir Range1SelectHdl( 0 ); 218*cdf0e10cSrcweir } 219*cdf0e10cSrcweir 220*cdf0e10cSrcweir 221*cdf0e10cSrcweir /************************************************************************* 222*cdf0e10cSrcweir #* Member: SetColRowData Datum:04.09.97 223*cdf0e10cSrcweir #*------------------------------------------------------------------------ 224*cdf0e10cSrcweir #* 225*cdf0e10cSrcweir #* Klasse: ScColRowNameRangesDlg 226*cdf0e10cSrcweir #* 227*cdf0e10cSrcweir #* Funktion: zugehoerigen Datenbereich eines Beschriftungsbereiches 228*cdf0e10cSrcweir #* auf default Werte setzen und beide Referenz-Edit-Felder 229*cdf0e10cSrcweir #* fuellen. 230*cdf0e10cSrcweir #* 231*cdf0e10cSrcweir #* Input: Einstellbereich fuer Labels 232*cdf0e10cSrcweir #* 233*cdf0e10cSrcweir #* Output: --- 234*cdf0e10cSrcweir #* 235*cdf0e10cSrcweir #************************************************************************/ 236*cdf0e10cSrcweir 237*cdf0e10cSrcweir void ScColRowNameRangesDlg::SetColRowData( const ScRange& rLabelRange,sal_Bool bRef) 238*cdf0e10cSrcweir { 239*cdf0e10cSrcweir theCurData = theCurArea = rLabelRange; 240*cdf0e10cSrcweir sal_Bool bValid = sal_True; 241*cdf0e10cSrcweir SCCOL nCol1 = theCurArea.aStart.Col(); 242*cdf0e10cSrcweir SCCOL nCol2 = theCurArea.aEnd.Col(); 243*cdf0e10cSrcweir SCROW nRow1 = theCurArea.aStart.Row(); 244*cdf0e10cSrcweir SCROW nRow2 = theCurArea.aEnd.Row(); 245*cdf0e10cSrcweir if ( (static_cast<SCCOLROW>(nCol2 - nCol1) >= nRow2 - nRow1) || (nCol1 == 0 && nCol2 == MAXCOL) ) 246*cdf0e10cSrcweir { // Spaltenkoepfe und Grenzfall gesamte Tabelle 247*cdf0e10cSrcweir aBtnColHead.Check( sal_True ); 248*cdf0e10cSrcweir aBtnRowHead.Check( sal_False ); 249*cdf0e10cSrcweir if ( nRow2 == MAXROW ) 250*cdf0e10cSrcweir { 251*cdf0e10cSrcweir if ( nRow1 == 0 ) 252*cdf0e10cSrcweir bValid = sal_False; // Grenzfall gesamte Tabelle 253*cdf0e10cSrcweir else 254*cdf0e10cSrcweir { // Head unten, Data oben 255*cdf0e10cSrcweir theCurData.aStart.SetRow( 0 ); 256*cdf0e10cSrcweir theCurData.aEnd.SetRow( nRow1 - 1 ); 257*cdf0e10cSrcweir } 258*cdf0e10cSrcweir } 259*cdf0e10cSrcweir else 260*cdf0e10cSrcweir { // Head oben, Data unten 261*cdf0e10cSrcweir theCurData.aStart.SetRow( nRow2 + 1 ); 262*cdf0e10cSrcweir theCurData.aEnd.SetRow( MAXROW ); 263*cdf0e10cSrcweir } 264*cdf0e10cSrcweir } 265*cdf0e10cSrcweir else 266*cdf0e10cSrcweir { // Zeilenkoepfe 267*cdf0e10cSrcweir aBtnRowHead.Check( sal_True ); 268*cdf0e10cSrcweir aBtnColHead.Check( sal_False ); 269*cdf0e10cSrcweir if ( nCol2 == MAXCOL ) 270*cdf0e10cSrcweir { // Head rechts, Data links 271*cdf0e10cSrcweir theCurData.aStart.SetCol( 0 ); 272*cdf0e10cSrcweir theCurData.aEnd.SetCol( nCol2 - 1 ); 273*cdf0e10cSrcweir } 274*cdf0e10cSrcweir else 275*cdf0e10cSrcweir { // Head links, Data rechts 276*cdf0e10cSrcweir theCurData.aStart.SetCol( nCol2 + 1 ); 277*cdf0e10cSrcweir theCurData.aEnd.SetCol( MAXCOL ); 278*cdf0e10cSrcweir } 279*cdf0e10cSrcweir } 280*cdf0e10cSrcweir if ( bValid ) 281*cdf0e10cSrcweir { 282*cdf0e10cSrcweir const formula::FormulaGrammar::AddressConvention eConv = pDoc->GetAddressConvention(); 283*cdf0e10cSrcweir String aStr; 284*cdf0e10cSrcweir theCurArea.Format( aStr, SCR_ABS_3D, pDoc, eConv ); 285*cdf0e10cSrcweir 286*cdf0e10cSrcweir if(bRef) 287*cdf0e10cSrcweir aEdAssign.SetRefString( aStr ); 288*cdf0e10cSrcweir else 289*cdf0e10cSrcweir aEdAssign.SetText( aStr ); 290*cdf0e10cSrcweir 291*cdf0e10cSrcweir aEdAssign.SetSelection( Selection( SELECTION_MAX, SELECTION_MAX ) ); 292*cdf0e10cSrcweir theCurData.Format( aStr, SCR_ABS_3D, pDoc, eConv ); 293*cdf0e10cSrcweir 294*cdf0e10cSrcweir if(bRef) 295*cdf0e10cSrcweir aEdAssign2.SetRefString( aStr ); 296*cdf0e10cSrcweir else 297*cdf0e10cSrcweir aEdAssign2.SetText( aStr ); 298*cdf0e10cSrcweir } 299*cdf0e10cSrcweir else 300*cdf0e10cSrcweir { 301*cdf0e10cSrcweir theCurData = theCurArea = ScRange(); 302*cdf0e10cSrcweir 303*cdf0e10cSrcweir if(bRef) 304*cdf0e10cSrcweir { 305*cdf0e10cSrcweir aEdAssign.SetRefString( EMPTY_STRING ); 306*cdf0e10cSrcweir aEdAssign2.SetRefString( EMPTY_STRING ); 307*cdf0e10cSrcweir } 308*cdf0e10cSrcweir else 309*cdf0e10cSrcweir { 310*cdf0e10cSrcweir aEdAssign.SetText( EMPTY_STRING ); 311*cdf0e10cSrcweir aEdAssign2.SetText( EMPTY_STRING ); 312*cdf0e10cSrcweir } 313*cdf0e10cSrcweir 314*cdf0e10cSrcweir aBtnColHead.Disable(); 315*cdf0e10cSrcweir aBtnRowHead.Disable(); 316*cdf0e10cSrcweir aEdAssign2.Disable(); 317*cdf0e10cSrcweir aRbAssign2.Disable(); 318*cdf0e10cSrcweir } 319*cdf0e10cSrcweir } 320*cdf0e10cSrcweir 321*cdf0e10cSrcweir 322*cdf0e10cSrcweir /************************************************************************* 323*cdf0e10cSrcweir #* Member: AdjustColRowData Datum:04.09.97 324*cdf0e10cSrcweir #*------------------------------------------------------------------------ 325*cdf0e10cSrcweir #* 326*cdf0e10cSrcweir #* Klasse: ScColRowNameRangesDlg 327*cdf0e10cSrcweir #* 328*cdf0e10cSrcweir #* Funktion: zugehoerigen Datenbereich eines Beschriftungsbereiches 329*cdf0e10cSrcweir #* anpassen und Data-Referenz-Edit-Feld fuellen. 330*cdf0e10cSrcweir #* 331*cdf0e10cSrcweir #* Input: Bereich fuer Labels 332*cdf0e10cSrcweir #* 333*cdf0e10cSrcweir #* Output: --- 334*cdf0e10cSrcweir #* 335*cdf0e10cSrcweir #************************************************************************/ 336*cdf0e10cSrcweir 337*cdf0e10cSrcweir void ScColRowNameRangesDlg::AdjustColRowData( const ScRange& rDataRange,sal_Bool bRef) 338*cdf0e10cSrcweir { 339*cdf0e10cSrcweir theCurData = rDataRange; 340*cdf0e10cSrcweir if ( aBtnColHead.IsChecked() ) 341*cdf0e10cSrcweir { // Datenbereich gleiche Spalten wie Koepfe 342*cdf0e10cSrcweir theCurData.aStart.SetCol( theCurArea.aStart.Col() ); 343*cdf0e10cSrcweir theCurData.aEnd.SetCol( theCurArea.aEnd.Col() ); 344*cdf0e10cSrcweir if ( theCurData.Intersects( theCurArea ) ) 345*cdf0e10cSrcweir { 346*cdf0e10cSrcweir SCROW nRow1 = theCurArea.aStart.Row(); 347*cdf0e10cSrcweir SCROW nRow2 = theCurArea.aEnd.Row(); 348*cdf0e10cSrcweir if ( nRow1 > 0 349*cdf0e10cSrcweir && (theCurData.aEnd.Row() < nRow2 || nRow2 == MAXROW) ) 350*cdf0e10cSrcweir { // Data oben 351*cdf0e10cSrcweir theCurData.aEnd.SetRow( nRow1 - 1 ); 352*cdf0e10cSrcweir if ( theCurData.aStart.Row() > theCurData.aEnd.Row() ) 353*cdf0e10cSrcweir theCurData.aStart.SetRow( theCurData.aEnd.Row() ); 354*cdf0e10cSrcweir } 355*cdf0e10cSrcweir else 356*cdf0e10cSrcweir { // Data unten 357*cdf0e10cSrcweir theCurData.aStart.SetRow( nRow2 + 1 ); 358*cdf0e10cSrcweir if ( theCurData.aStart.Row() > theCurData.aEnd.Row() ) 359*cdf0e10cSrcweir theCurData.aEnd.SetRow( theCurData.aStart.Row() ); 360*cdf0e10cSrcweir } 361*cdf0e10cSrcweir } 362*cdf0e10cSrcweir } 363*cdf0e10cSrcweir else 364*cdf0e10cSrcweir { // Datenbereich gleiche Zeilen wie Koepfe 365*cdf0e10cSrcweir theCurData.aStart.SetRow( theCurArea.aStart.Row() ); 366*cdf0e10cSrcweir theCurData.aEnd.SetRow( theCurArea.aEnd.Row() ); 367*cdf0e10cSrcweir if ( theCurData.Intersects( theCurArea ) ) 368*cdf0e10cSrcweir { 369*cdf0e10cSrcweir SCCOL nCol1 = theCurArea.aStart.Col(); 370*cdf0e10cSrcweir SCCOL nCol2 = theCurArea.aEnd.Col(); 371*cdf0e10cSrcweir if ( nCol1 > 0 372*cdf0e10cSrcweir && (theCurData.aEnd.Col() < nCol2 || nCol2 == MAXCOL) ) 373*cdf0e10cSrcweir { // Data links 374*cdf0e10cSrcweir theCurData.aEnd.SetCol( nCol1 - 1 ); 375*cdf0e10cSrcweir if ( theCurData.aStart.Col() > theCurData.aEnd.Col() ) 376*cdf0e10cSrcweir theCurData.aStart.SetCol( theCurData.aEnd.Col() ); 377*cdf0e10cSrcweir } 378*cdf0e10cSrcweir else 379*cdf0e10cSrcweir { // Data rechts 380*cdf0e10cSrcweir theCurData.aStart.SetCol( nCol2 + 1 ); 381*cdf0e10cSrcweir if ( theCurData.aStart.Col() > theCurData.aEnd.Col() ) 382*cdf0e10cSrcweir theCurData.aEnd.SetCol( theCurData.aStart.Col() ); 383*cdf0e10cSrcweir } 384*cdf0e10cSrcweir } 385*cdf0e10cSrcweir } 386*cdf0e10cSrcweir String aStr; 387*cdf0e10cSrcweir theCurData.Format( aStr, SCR_ABS_3D, pDoc, pDoc->GetAddressConvention() ); 388*cdf0e10cSrcweir 389*cdf0e10cSrcweir if(bRef) 390*cdf0e10cSrcweir aEdAssign2.SetRefString( aStr ); 391*cdf0e10cSrcweir else 392*cdf0e10cSrcweir aEdAssign2.SetText( aStr ); 393*cdf0e10cSrcweir 394*cdf0e10cSrcweir aEdAssign2.SetSelection( Selection( SELECTION_MAX, SELECTION_MAX ) ); 395*cdf0e10cSrcweir } 396*cdf0e10cSrcweir 397*cdf0e10cSrcweir 398*cdf0e10cSrcweir /************************************************************************* 399*cdf0e10cSrcweir #* Member: SetReference Datum:04.09.97 400*cdf0e10cSrcweir #*------------------------------------------------------------------------ 401*cdf0e10cSrcweir #* 402*cdf0e10cSrcweir #* Klasse: ScColRowNameRangesDlg 403*cdf0e10cSrcweir #* 404*cdf0e10cSrcweir #* Funktion: Uebergabe eines mit der Maus selektierten Tabellen- 405*cdf0e10cSrcweir #* bereiches, der dann als neue Selektion im Referenz- 406*cdf0e10cSrcweir #* Fenster angezeigt wird. 407*cdf0e10cSrcweir #* 408*cdf0e10cSrcweir #* Input: Bereich fuer Labels 409*cdf0e10cSrcweir #* Dokumentklasse 410*cdf0e10cSrcweir #* 411*cdf0e10cSrcweir #* Output: --- 412*cdf0e10cSrcweir #* 413*cdf0e10cSrcweir #************************************************************************/ 414*cdf0e10cSrcweir 415*cdf0e10cSrcweir void ScColRowNameRangesDlg::SetReference( const ScRange& rRef, ScDocument* /* pDoc */ ) 416*cdf0e10cSrcweir { 417*cdf0e10cSrcweir if ( pEdActive ) 418*cdf0e10cSrcweir { 419*cdf0e10cSrcweir if ( rRef.aStart != rRef.aEnd ) 420*cdf0e10cSrcweir RefInputStart( pEdActive ); 421*cdf0e10cSrcweir 422*cdf0e10cSrcweir String aRefStr; 423*cdf0e10cSrcweir if ( pEdActive == &aEdAssign ) 424*cdf0e10cSrcweir SetColRowData( rRef, sal_True ); 425*cdf0e10cSrcweir else 426*cdf0e10cSrcweir AdjustColRowData( rRef, sal_True ); 427*cdf0e10cSrcweir aBtnColHead.Enable(); 428*cdf0e10cSrcweir aBtnRowHead.Enable(); 429*cdf0e10cSrcweir aBtnAdd.Enable(); 430*cdf0e10cSrcweir aBtnRemove.Disable(); 431*cdf0e10cSrcweir } 432*cdf0e10cSrcweir } 433*cdf0e10cSrcweir 434*cdf0e10cSrcweir 435*cdf0e10cSrcweir /************************************************************************* 436*cdf0e10cSrcweir #* Member: Close Datum:04.09.97 437*cdf0e10cSrcweir #*------------------------------------------------------------------------ 438*cdf0e10cSrcweir #* 439*cdf0e10cSrcweir #* Klasse: ScColRowNameRangesDlg 440*cdf0e10cSrcweir #* 441*cdf0e10cSrcweir #* Funktion: Schliessen des Fensters 442*cdf0e10cSrcweir #* 443*cdf0e10cSrcweir #* Input: --- 444*cdf0e10cSrcweir #* 445*cdf0e10cSrcweir #* Output: --- 446*cdf0e10cSrcweir #* 447*cdf0e10cSrcweir #************************************************************************/ 448*cdf0e10cSrcweir 449*cdf0e10cSrcweir sal_Bool __EXPORT ScColRowNameRangesDlg::Close() 450*cdf0e10cSrcweir { 451*cdf0e10cSrcweir return DoClose( ScColRowNameRangesDlgWrapper::GetChildWindowId() ); 452*cdf0e10cSrcweir } 453*cdf0e10cSrcweir 454*cdf0e10cSrcweir 455*cdf0e10cSrcweir /************************************************************************* 456*cdf0e10cSrcweir #* Member: SetActive Datum:04.09.97 457*cdf0e10cSrcweir #*------------------------------------------------------------------------ 458*cdf0e10cSrcweir #* 459*cdf0e10cSrcweir #* Klasse: ScColRowNameRangesDlg 460*cdf0e10cSrcweir #* 461*cdf0e10cSrcweir #* Funktion: Aktivieren des Fensters 462*cdf0e10cSrcweir #* 463*cdf0e10cSrcweir #* Input: --- 464*cdf0e10cSrcweir #* 465*cdf0e10cSrcweir #* Output: --- 466*cdf0e10cSrcweir #* 467*cdf0e10cSrcweir #************************************************************************/ 468*cdf0e10cSrcweir 469*cdf0e10cSrcweir void ScColRowNameRangesDlg::SetActive() 470*cdf0e10cSrcweir { 471*cdf0e10cSrcweir if ( bDlgLostFocus ) 472*cdf0e10cSrcweir { 473*cdf0e10cSrcweir bDlgLostFocus = sal_False; 474*cdf0e10cSrcweir if( pEdActive ) 475*cdf0e10cSrcweir pEdActive->GrabFocus(); 476*cdf0e10cSrcweir } 477*cdf0e10cSrcweir else 478*cdf0e10cSrcweir GrabFocus(); 479*cdf0e10cSrcweir 480*cdf0e10cSrcweir if( pEdActive == &aEdAssign ) 481*cdf0e10cSrcweir Range1DataModifyHdl( 0 ); 482*cdf0e10cSrcweir else if( pEdActive == &aEdAssign2 ) 483*cdf0e10cSrcweir Range2DataModifyHdl( 0 ); 484*cdf0e10cSrcweir 485*cdf0e10cSrcweir RefInputDone(); 486*cdf0e10cSrcweir } 487*cdf0e10cSrcweir 488*cdf0e10cSrcweir 489*cdf0e10cSrcweir /************************************************************************* 490*cdf0e10cSrcweir #* Member: UpdateNames Datum:04.09.97 491*cdf0e10cSrcweir #*------------------------------------------------------------------------ 492*cdf0e10cSrcweir #* 493*cdf0e10cSrcweir #* Klasse: ScColRowNameRangesDlg 494*cdf0e10cSrcweir #* 495*cdf0e10cSrcweir #* Funktion: Aktualisieren der Namen 496*cdf0e10cSrcweir #* 497*cdf0e10cSrcweir #* Input: --- 498*cdf0e10cSrcweir #* 499*cdf0e10cSrcweir #* Output: --- 500*cdf0e10cSrcweir #* 501*cdf0e10cSrcweir #************************************************************************/ 502*cdf0e10cSrcweir 503*cdf0e10cSrcweir void ScColRowNameRangesDlg::UpdateNames() 504*cdf0e10cSrcweir { 505*cdf0e10cSrcweir aLbRange.SetUpdateMode( sal_False ); 506*cdf0e10cSrcweir //----------------------------------------------------------- 507*cdf0e10cSrcweir aLbRange.Clear(); 508*cdf0e10cSrcweir aRangeMap.clear(); 509*cdf0e10cSrcweir aEdAssign.SetText( EMPTY_STRING ); 510*cdf0e10cSrcweir 511*cdf0e10cSrcweir sal_uLong nCount, j; 512*cdf0e10cSrcweir sal_uInt16 nPos; //@008 Hilfsvariable q eingefuegt 513*cdf0e10cSrcweir 514*cdf0e10cSrcweir SCCOL nCol1; //@008 04.09.97 515*cdf0e10cSrcweir SCROW nRow1; //Erweiterung fuer Bereichsnamen 516*cdf0e10cSrcweir SCTAB nTab1; 517*cdf0e10cSrcweir SCCOL nCol2; 518*cdf0e10cSrcweir SCROW nRow2; 519*cdf0e10cSrcweir SCTAB nTab2; 520*cdf0e10cSrcweir String rString; 521*cdf0e10cSrcweir String strShow; 522*cdf0e10cSrcweir const ScAddress::Details aDetails(pDoc->GetAddressConvention()); 523*cdf0e10cSrcweir 524*cdf0e10cSrcweir String aString; 525*cdf0e10cSrcweir String strDelim = String::CreateFromAscii(RTL_CONSTASCII_STRINGPARAM( " --- " )); 526*cdf0e10cSrcweir aString = strDelim; 527*cdf0e10cSrcweir aString += ScGlobal::GetRscString( STR_COLUMN ); 528*cdf0e10cSrcweir aString += strDelim; 529*cdf0e10cSrcweir nPos = aLbRange.InsertEntry( aString ); 530*cdf0e10cSrcweir aLbRange.SetEntryData( nPos, (void*)nEntryDataDelim ); 531*cdf0e10cSrcweir if ( (nCount = xColNameRanges->Count()) > 0 ) 532*cdf0e10cSrcweir { 533*cdf0e10cSrcweir ScRangePair** ppSortArray = xColNameRanges->CreateNameSortedArray( 534*cdf0e10cSrcweir nCount, pDoc ); 535*cdf0e10cSrcweir for ( j=0; j < nCount; j++ ) 536*cdf0e10cSrcweir { 537*cdf0e10cSrcweir const ScRange aRange(ppSortArray[j]->GetRange(0)); 538*cdf0e10cSrcweir aRange.Format( aString, SCR_ABS_3D, pDoc, aDetails ); 539*cdf0e10cSrcweir 540*cdf0e10cSrcweir //@008 Hole Bereichsparameter aus Dok 541*cdf0e10cSrcweir ppSortArray[j]->GetRange(0).GetVars( nCol1, nRow1, nTab1, 542*cdf0e10cSrcweir nCol2, nRow2, nTab2 ); 543*cdf0e10cSrcweir SCCOL q=nCol1+3; 544*cdf0e10cSrcweir if(q>nCol2) q=nCol2; 545*cdf0e10cSrcweir //@008 Baue String zusammen 546*cdf0e10cSrcweir strShow.AssignAscii(RTL_CONSTASCII_STRINGPARAM(" [")); 547*cdf0e10cSrcweir if(pDoc!=NULL) 548*cdf0e10cSrcweir { 549*cdf0e10cSrcweir pDoc->GetString(nCol1, nRow1, nTab1,rString); 550*cdf0e10cSrcweir strShow +=rString; 551*cdf0e10cSrcweir for(SCCOL i=nCol1+1;i<=q;i++) 552*cdf0e10cSrcweir { 553*cdf0e10cSrcweir strShow.AppendAscii(RTL_CONSTASCII_STRINGPARAM(", ")); 554*cdf0e10cSrcweir pDoc->GetString(i, nRow1, nTab1,rString); 555*cdf0e10cSrcweir strShow += rString; 556*cdf0e10cSrcweir } 557*cdf0e10cSrcweir } 558*cdf0e10cSrcweir if(q<nCol2) // Zu lang? Ergaenzen um ",..." 559*cdf0e10cSrcweir { 560*cdf0e10cSrcweir strShow.AppendAscii(RTL_CONSTASCII_STRINGPARAM(", ...")); 561*cdf0e10cSrcweir } 562*cdf0e10cSrcweir strShow += ']'; 563*cdf0e10cSrcweir 564*cdf0e10cSrcweir //@008 String einfuegen in Listbox 565*cdf0e10cSrcweir String aInsStr = aString; 566*cdf0e10cSrcweir aInsStr += strShow; 567*cdf0e10cSrcweir nPos = aLbRange.InsertEntry( aInsStr ); 568*cdf0e10cSrcweir aRangeMap.insert( NameRangeMap::value_type(aInsStr, aRange) ); 569*cdf0e10cSrcweir aLbRange.SetEntryData( nPos, (void*)nEntryDataCol ); 570*cdf0e10cSrcweir } 571*cdf0e10cSrcweir delete [] ppSortArray; 572*cdf0e10cSrcweir } 573*cdf0e10cSrcweir aString = strDelim; 574*cdf0e10cSrcweir aString += ScGlobal::GetRscString( STR_ROW ); 575*cdf0e10cSrcweir aString += strDelim; 576*cdf0e10cSrcweir nPos = aLbRange.InsertEntry( aString ); 577*cdf0e10cSrcweir aLbRange.SetEntryData( nPos, (void*)nEntryDataDelim ); 578*cdf0e10cSrcweir if ( (nCount = xRowNameRanges->Count()) > 0 ) 579*cdf0e10cSrcweir { 580*cdf0e10cSrcweir ScRangePair** ppSortArray = xRowNameRanges->CreateNameSortedArray( 581*cdf0e10cSrcweir nCount, pDoc ); 582*cdf0e10cSrcweir for ( j=0; j < nCount; j++ ) 583*cdf0e10cSrcweir { 584*cdf0e10cSrcweir const ScRange aRange(ppSortArray[j]->GetRange(0)); 585*cdf0e10cSrcweir aRange.Format( aString, SCR_ABS_3D, pDoc, aDetails ); 586*cdf0e10cSrcweir 587*cdf0e10cSrcweir //@008 Ab hier baue String fuer Zeilen 588*cdf0e10cSrcweir ppSortArray[j]->GetRange(0).GetVars( nCol1, nRow1, nTab1, 589*cdf0e10cSrcweir nCol2, nRow2, nTab2 ); 590*cdf0e10cSrcweir SCROW q=nRow1+3; 591*cdf0e10cSrcweir if(q>nRow2) q=nRow2; 592*cdf0e10cSrcweir strShow.AssignAscii(RTL_CONSTASCII_STRINGPARAM(" [")); 593*cdf0e10cSrcweir if(pDoc!=NULL) 594*cdf0e10cSrcweir { 595*cdf0e10cSrcweir pDoc->GetString(nCol1, nRow1, nTab1,rString); 596*cdf0e10cSrcweir strShow += rString; 597*cdf0e10cSrcweir for(SCROW i=nRow1+1;i<=q;i++) 598*cdf0e10cSrcweir { 599*cdf0e10cSrcweir strShow.AppendAscii(RTL_CONSTASCII_STRINGPARAM(", ")); 600*cdf0e10cSrcweir pDoc->GetString(nCol1, i, nTab1,rString); 601*cdf0e10cSrcweir strShow += rString; 602*cdf0e10cSrcweir } 603*cdf0e10cSrcweir } 604*cdf0e10cSrcweir if(q<nRow2) 605*cdf0e10cSrcweir { 606*cdf0e10cSrcweir strShow.AppendAscii(RTL_CONSTASCII_STRINGPARAM(", ...")); 607*cdf0e10cSrcweir } 608*cdf0e10cSrcweir strShow += ']'; 609*cdf0e10cSrcweir 610*cdf0e10cSrcweir String aInsStr = aString; 611*cdf0e10cSrcweir aInsStr += strShow; 612*cdf0e10cSrcweir nPos = aLbRange.InsertEntry( aInsStr ); 613*cdf0e10cSrcweir aRangeMap.insert( NameRangeMap::value_type(aInsStr, aRange) ); 614*cdf0e10cSrcweir aLbRange.SetEntryData( nPos, (void*)nEntryDataRow ); 615*cdf0e10cSrcweir } 616*cdf0e10cSrcweir delete [] ppSortArray; 617*cdf0e10cSrcweir } 618*cdf0e10cSrcweir //----------------------------------------------------------- 619*cdf0e10cSrcweir aLbRange.SetUpdateMode( sal_True ); 620*cdf0e10cSrcweir aLbRange.Invalidate(); 621*cdf0e10cSrcweir } 622*cdf0e10cSrcweir 623*cdf0e10cSrcweir 624*cdf0e10cSrcweir /************************************************************************* 625*cdf0e10cSrcweir #* Member: UpdateRangeData Datum:04.09.97 626*cdf0e10cSrcweir #*------------------------------------------------------------------------ 627*cdf0e10cSrcweir #* 628*cdf0e10cSrcweir #* Klasse: ScColRowNameRangesDlg 629*cdf0e10cSrcweir #* 630*cdf0e10cSrcweir #* Funktion: Aktualisieren der Bereichsdaten 631*cdf0e10cSrcweir #* 632*cdf0e10cSrcweir #* Input: Bereichs-String 633*cdf0e10cSrcweir #* Flag fuer Spalten 634*cdf0e10cSrcweir #* 635*cdf0e10cSrcweir #* Output: --- 636*cdf0e10cSrcweir #* 637*cdf0e10cSrcweir #************************************************************************/ 638*cdf0e10cSrcweir 639*cdf0e10cSrcweir void ScColRowNameRangesDlg::UpdateRangeData( const ScRange& rRange, sal_Bool bColName ) 640*cdf0e10cSrcweir { 641*cdf0e10cSrcweir ScRangePair* pPair = NULL; 642*cdf0e10cSrcweir sal_Bool bFound = sal_False; 643*cdf0e10cSrcweir if ( bColName && (pPair = xColNameRanges->Find( rRange )) != NULL ) 644*cdf0e10cSrcweir bFound = sal_True; 645*cdf0e10cSrcweir else if ( !bColName && (pPair = xRowNameRanges->Find( rRange )) != NULL ) 646*cdf0e10cSrcweir bFound = sal_True; 647*cdf0e10cSrcweir 648*cdf0e10cSrcweir if ( bFound ) 649*cdf0e10cSrcweir { 650*cdf0e10cSrcweir const formula::FormulaGrammar::AddressConvention eConv = pDoc->GetAddressConvention(); 651*cdf0e10cSrcweir String aStr; 652*cdf0e10cSrcweir theCurArea = rRange; 653*cdf0e10cSrcweir theCurArea.Format( aStr, SCR_ABS_3D, pDoc, eConv ); 654*cdf0e10cSrcweir aEdAssign.SetText( aStr ); 655*cdf0e10cSrcweir aBtnAdd.Disable(); 656*cdf0e10cSrcweir aBtnRemove.Enable(); 657*cdf0e10cSrcweir aBtnColHead.Check( bColName ); 658*cdf0e10cSrcweir aBtnRowHead.Check( !bColName ); 659*cdf0e10cSrcweir theCurData = pPair->GetRange(1); 660*cdf0e10cSrcweir theCurData.Format( aStr, SCR_ABS_3D, pDoc, eConv ); 661*cdf0e10cSrcweir aEdAssign2.SetText( aStr ); 662*cdf0e10cSrcweir } 663*cdf0e10cSrcweir else 664*cdf0e10cSrcweir { 665*cdf0e10cSrcweir aBtnAdd.Enable(); 666*cdf0e10cSrcweir aBtnRemove.Disable(); 667*cdf0e10cSrcweir } 668*cdf0e10cSrcweir aBtnColHead.Enable(); 669*cdf0e10cSrcweir aBtnRowHead.Enable(); 670*cdf0e10cSrcweir aEdAssign2.Enable(); 671*cdf0e10cSrcweir aRbAssign2.Enable(); 672*cdf0e10cSrcweir } 673*cdf0e10cSrcweir 674*cdf0e10cSrcweir 675*cdf0e10cSrcweir /************************************************************************* 676*cdf0e10cSrcweir #* Member: IsRefInputMode Datum:04.09.97 677*cdf0e10cSrcweir #*------------------------------------------------------------------------ 678*cdf0e10cSrcweir #* 679*cdf0e10cSrcweir #* Klasse: ScColRowNameRangesDlg 680*cdf0e10cSrcweir #* 681*cdf0e10cSrcweir #* Funktion: Abfragefunktion fuer Referenz- Input- Mode. 682*cdf0e10cSrcweir #* 683*cdf0e10cSrcweir #* Input: Bereichs-String 684*cdf0e10cSrcweir #* Flag fuer Spalten 685*cdf0e10cSrcweir #* 686*cdf0e10cSrcweir #* Output: true, wenn Referenz- Input- Mode 687*cdf0e10cSrcweir #* 688*cdf0e10cSrcweir #************************************************************************/ 689*cdf0e10cSrcweir 690*cdf0e10cSrcweir sal_Bool ScColRowNameRangesDlg::IsRefInputMode() const 691*cdf0e10cSrcweir { 692*cdf0e10cSrcweir return (pEdActive != NULL); 693*cdf0e10cSrcweir } 694*cdf0e10cSrcweir 695*cdf0e10cSrcweir //------------------------------------------------------------------------ 696*cdf0e10cSrcweir // Handler: 697*cdf0e10cSrcweir // ======== 698*cdf0e10cSrcweir 699*cdf0e10cSrcweir /************************************************************************* 700*cdf0e10cSrcweir #* Handler: OkBtnHdl Datum:04.09.97 701*cdf0e10cSrcweir #*------------------------------------------------------------------------ 702*cdf0e10cSrcweir #* 703*cdf0e10cSrcweir #* Klasse: ScColRowNameRangesDlg 704*cdf0e10cSrcweir #* 705*cdf0e10cSrcweir #* Funktion: Wird ausgeloest, wenn der OK- Button gedrueckt wurde. 706*cdf0e10cSrcweir #* Hinzufuegen- Button ausloesen, und die neu einge- 707*cdf0e10cSrcweir #* stellten Bereiche ans Dokument uebergeben. 708*cdf0e10cSrcweir #* Fensterschliessen- Anweisung ausloesen. 709*cdf0e10cSrcweir #* Input: --- 710*cdf0e10cSrcweir #* 711*cdf0e10cSrcweir #* Output: --- 712*cdf0e10cSrcweir #* 713*cdf0e10cSrcweir #************************************************************************/ 714*cdf0e10cSrcweir 715*cdf0e10cSrcweir IMPL_LINK( ScColRowNameRangesDlg, OkBtnHdl, void *, EMPTYARG ) 716*cdf0e10cSrcweir { 717*cdf0e10cSrcweir AddBtnHdl( 0 ); 718*cdf0e10cSrcweir 719*cdf0e10cSrcweir // die RangeLists den Refs am Doc zuweisen 720*cdf0e10cSrcweir pDoc->GetColNameRangesRef() = xColNameRanges; 721*cdf0e10cSrcweir pDoc->GetRowNameRangesRef() = xRowNameRanges; 722*cdf0e10cSrcweir // geaenderte Datenbereiche muessen sich auswirken 723*cdf0e10cSrcweir pDoc->CompileColRowNameFormula(); 724*cdf0e10cSrcweir ScDocShell* pDocShell = pViewData->GetDocShell(); 725*cdf0e10cSrcweir pDocShell->PostPaint( 0,0,0, MAXCOL,MAXROW,MAXTAB, PAINT_GRID ); 726*cdf0e10cSrcweir pDocShell->SetDocumentModified(); 727*cdf0e10cSrcweir 728*cdf0e10cSrcweir Close(); 729*cdf0e10cSrcweir return 0; 730*cdf0e10cSrcweir } 731*cdf0e10cSrcweir 732*cdf0e10cSrcweir 733*cdf0e10cSrcweir /************************************************************************* 734*cdf0e10cSrcweir #* Handler: CancelBtnHdl Datum:04.09.97 735*cdf0e10cSrcweir #*------------------------------------------------------------------------ 736*cdf0e10cSrcweir #* 737*cdf0e10cSrcweir #* Klasse: ScColRowNameRangesDlg 738*cdf0e10cSrcweir #* 739*cdf0e10cSrcweir #* Funktion: Fensterschliessen- Anweisung ausloesen. 740*cdf0e10cSrcweir #* 741*cdf0e10cSrcweir #* Input: --- 742*cdf0e10cSrcweir #* 743*cdf0e10cSrcweir #* Output: --- 744*cdf0e10cSrcweir #* 745*cdf0e10cSrcweir #************************************************************************/ 746*cdf0e10cSrcweir 747*cdf0e10cSrcweir IMPL_LINK_INLINE_START( ScColRowNameRangesDlg, CancelBtnHdl, void *, EMPTYARG ) 748*cdf0e10cSrcweir { 749*cdf0e10cSrcweir Close(); 750*cdf0e10cSrcweir return 0; 751*cdf0e10cSrcweir } 752*cdf0e10cSrcweir IMPL_LINK_INLINE_END( ScColRowNameRangesDlg, CancelBtnHdl, void *, EMPTYARG ) 753*cdf0e10cSrcweir 754*cdf0e10cSrcweir 755*cdf0e10cSrcweir /************************************************************************* 756*cdf0e10cSrcweir #* Handler: AddBtnHdl Datum:04.09.97 757*cdf0e10cSrcweir #*------------------------------------------------------------------------ 758*cdf0e10cSrcweir #* 759*cdf0e10cSrcweir #* Klasse: ScColRowNameRangesDlg 760*cdf0e10cSrcweir #* 761*cdf0e10cSrcweir #* Funktion: Nach betaetigen des Hinzufuegen- Buttons, werden 762*cdf0e10cSrcweir #* die Bereichsangaben eingestellt und in der 763*cdf0e10cSrcweir #* Listbox dargestellt. 764*cdf0e10cSrcweir #* 765*cdf0e10cSrcweir #* Input: --- 766*cdf0e10cSrcweir #* 767*cdf0e10cSrcweir #* Output: --- 768*cdf0e10cSrcweir #* 769*cdf0e10cSrcweir #************************************************************************/ 770*cdf0e10cSrcweir 771*cdf0e10cSrcweir IMPL_LINK( ScColRowNameRangesDlg, AddBtnHdl, void *, EMPTYARG ) 772*cdf0e10cSrcweir { 773*cdf0e10cSrcweir String aNewArea( aEdAssign.GetText() ); 774*cdf0e10cSrcweir String aNewData( aEdAssign2.GetText() ); 775*cdf0e10cSrcweir 776*cdf0e10cSrcweir if ( aNewArea.Len() > 0 && aNewData.Len() > 0 ) 777*cdf0e10cSrcweir { 778*cdf0e10cSrcweir const formula::FormulaGrammar::AddressConvention eConv = pDoc->GetAddressConvention(); 779*cdf0e10cSrcweir ScRange aRange1, aRange2; 780*cdf0e10cSrcweir sal_Bool bOk1; 781*cdf0e10cSrcweir if ( (bOk1 = ((aRange1.ParseAny( aNewArea, pDoc, eConv ) & SCA_VALID) == SCA_VALID)) != sal_False 782*cdf0e10cSrcweir && ((aRange2.ParseAny( aNewData, pDoc, eConv ) & SCA_VALID) == SCA_VALID) ) 783*cdf0e10cSrcweir { 784*cdf0e10cSrcweir theCurArea = aRange1; 785*cdf0e10cSrcweir AdjustColRowData( aRange2 ); 786*cdf0e10cSrcweir ScRangePair* pPair; 787*cdf0e10cSrcweir if ( ( pPair = xColNameRanges->Find( theCurArea ) ) != NULL ) 788*cdf0e10cSrcweir { 789*cdf0e10cSrcweir xColNameRanges->Remove( pPair ); 790*cdf0e10cSrcweir delete pPair; 791*cdf0e10cSrcweir } 792*cdf0e10cSrcweir if ( ( pPair = xRowNameRanges->Find( theCurArea ) ) != NULL ) 793*cdf0e10cSrcweir { 794*cdf0e10cSrcweir xRowNameRanges->Remove( pPair ); 795*cdf0e10cSrcweir delete pPair; 796*cdf0e10cSrcweir } 797*cdf0e10cSrcweir if ( aBtnColHead.IsChecked() ) 798*cdf0e10cSrcweir xColNameRanges->Join( ScRangePair( theCurArea, theCurData ) ); 799*cdf0e10cSrcweir else 800*cdf0e10cSrcweir xRowNameRanges->Join( ScRangePair( theCurArea, theCurData ) ); 801*cdf0e10cSrcweir 802*cdf0e10cSrcweir UpdateNames(); 803*cdf0e10cSrcweir 804*cdf0e10cSrcweir aEdAssign.GrabFocus(); 805*cdf0e10cSrcweir aBtnAdd.Disable(); 806*cdf0e10cSrcweir aBtnRemove.Disable(); 807*cdf0e10cSrcweir aEdAssign.SetText( EMPTY_STRING ); 808*cdf0e10cSrcweir aBtnColHead.Check( sal_True ); 809*cdf0e10cSrcweir aBtnRowHead.Check( sal_False ); 810*cdf0e10cSrcweir aEdAssign2.SetText( EMPTY_STRING ); 811*cdf0e10cSrcweir theCurArea = ScRange(); 812*cdf0e10cSrcweir theCurData = theCurArea; 813*cdf0e10cSrcweir Range1SelectHdl( 0 ); 814*cdf0e10cSrcweir } 815*cdf0e10cSrcweir else 816*cdf0e10cSrcweir { 817*cdf0e10cSrcweir ERRORBOX( ScGlobal::GetRscString(STR_INVALIDTABNAME) ); 818*cdf0e10cSrcweir if ( !bOk1 ) 819*cdf0e10cSrcweir aEdAssign.GrabFocus(); 820*cdf0e10cSrcweir else 821*cdf0e10cSrcweir aEdAssign2.GrabFocus(); 822*cdf0e10cSrcweir } 823*cdf0e10cSrcweir } 824*cdf0e10cSrcweir return 0; 825*cdf0e10cSrcweir } 826*cdf0e10cSrcweir 827*cdf0e10cSrcweir 828*cdf0e10cSrcweir /************************************************************************* 829*cdf0e10cSrcweir #* Handler: RemoveBtnHdl Datum:04.09.97 830*cdf0e10cSrcweir #*------------------------------------------------------------------------ 831*cdf0e10cSrcweir #* 832*cdf0e10cSrcweir #* Klasse: ScColRowNameRangesDlg 833*cdf0e10cSrcweir #* 834*cdf0e10cSrcweir #* Funktion: Nach betaetigen des Loeschen- Buttons, wird 835*cdf0e10cSrcweir #* die markierte Bereichsangabe geloescht. 836*cdf0e10cSrcweir #* 837*cdf0e10cSrcweir #* Input: --- 838*cdf0e10cSrcweir #* 839*cdf0e10cSrcweir #* Output: --- 840*cdf0e10cSrcweir #* 841*cdf0e10cSrcweir #************************************************************************/ 842*cdf0e10cSrcweir 843*cdf0e10cSrcweir IMPL_LINK( ScColRowNameRangesDlg, RemoveBtnHdl, void *, EMPTYARG ) 844*cdf0e10cSrcweir { 845*cdf0e10cSrcweir String aRangeStr = aLbRange.GetSelectEntry(); 846*cdf0e10cSrcweir sal_uInt16 nSelectPos = aLbRange.GetSelectEntryPos(); 847*cdf0e10cSrcweir sal_Bool bColName = 848*cdf0e10cSrcweir ((sal_uLong)aLbRange.GetEntryData( nSelectPos ) == nEntryDataCol); 849*cdf0e10cSrcweir NameRangeMap::const_iterator itr = aRangeMap.find(aRangeStr); 850*cdf0e10cSrcweir if (itr == aRangeMap.end()) 851*cdf0e10cSrcweir return 0; 852*cdf0e10cSrcweir const ScRange& rRange = itr->second; 853*cdf0e10cSrcweir 854*cdf0e10cSrcweir ScRangePair* pPair = NULL; 855*cdf0e10cSrcweir sal_Bool bFound = sal_False; 856*cdf0e10cSrcweir if ( bColName && (pPair = xColNameRanges->Find( rRange )) != NULL ) 857*cdf0e10cSrcweir bFound = sal_True; 858*cdf0e10cSrcweir else if ( !bColName && (pPair = xRowNameRanges->Find( rRange )) != NULL ) 859*cdf0e10cSrcweir bFound = sal_True; 860*cdf0e10cSrcweir if ( bFound ) 861*cdf0e10cSrcweir { 862*cdf0e10cSrcweir String aStrDelMsg = ScGlobal::GetRscString( STR_QUERY_DELENTRY ); 863*cdf0e10cSrcweir String aMsg = aStrDelMsg.GetToken( 0, '#' ); 864*cdf0e10cSrcweir 865*cdf0e10cSrcweir aMsg += aRangeStr; 866*cdf0e10cSrcweir aMsg += aStrDelMsg.GetToken( 1, '#' ); 867*cdf0e10cSrcweir 868*cdf0e10cSrcweir if ( RET_YES == QUERYBOX(aMsg) ) 869*cdf0e10cSrcweir { 870*cdf0e10cSrcweir if ( bColName ) 871*cdf0e10cSrcweir xColNameRanges->Remove( pPair ); 872*cdf0e10cSrcweir else 873*cdf0e10cSrcweir xRowNameRanges->Remove( pPair ); 874*cdf0e10cSrcweir delete pPair; 875*cdf0e10cSrcweir 876*cdf0e10cSrcweir UpdateNames(); 877*cdf0e10cSrcweir sal_uInt16 nCnt = aLbRange.GetEntryCount(); 878*cdf0e10cSrcweir if ( nSelectPos >= nCnt ) 879*cdf0e10cSrcweir { 880*cdf0e10cSrcweir if ( nCnt ) 881*cdf0e10cSrcweir nSelectPos = nCnt - 1; 882*cdf0e10cSrcweir else 883*cdf0e10cSrcweir nSelectPos = 0; 884*cdf0e10cSrcweir } 885*cdf0e10cSrcweir aLbRange.SelectEntryPos( nSelectPos ); 886*cdf0e10cSrcweir if ( nSelectPos && 887*cdf0e10cSrcweir (sal_uLong)aLbRange.GetEntryData( nSelectPos ) == nEntryDataDelim ) 888*cdf0e10cSrcweir aLbRange.SelectEntryPos( --nSelectPos ); // ---Zeile--- 889*cdf0e10cSrcweir 890*cdf0e10cSrcweir aLbRange.GrabFocus(); 891*cdf0e10cSrcweir aBtnAdd.Disable(); 892*cdf0e10cSrcweir aBtnRemove.Disable(); 893*cdf0e10cSrcweir aEdAssign.SetText( EMPTY_STRING ); 894*cdf0e10cSrcweir theCurArea = theCurData = ScRange(); 895*cdf0e10cSrcweir aBtnColHead.Check( sal_True ); 896*cdf0e10cSrcweir aBtnRowHead.Check( sal_False ); 897*cdf0e10cSrcweir aEdAssign2.SetText( EMPTY_STRING ); 898*cdf0e10cSrcweir Range1SelectHdl( 0 ); 899*cdf0e10cSrcweir } 900*cdf0e10cSrcweir } 901*cdf0e10cSrcweir return 0; 902*cdf0e10cSrcweir } 903*cdf0e10cSrcweir 904*cdf0e10cSrcweir 905*cdf0e10cSrcweir /************************************************************************* 906*cdf0e10cSrcweir #* Handler: Range1SelectHdl Datum:04.09.97 907*cdf0e10cSrcweir #*------------------------------------------------------------------------ 908*cdf0e10cSrcweir #* 909*cdf0e10cSrcweir #* Klasse: ScColRowNameRangesDlg 910*cdf0e10cSrcweir #* 911*cdf0e10cSrcweir #* Funktion: Wenn Zeile in Listbox ausgewaehlt wird, 912*cdf0e10cSrcweir #* werden die Eingabefelder entsprechend 913*cdf0e10cSrcweir #* eingestellt. 914*cdf0e10cSrcweir #* 915*cdf0e10cSrcweir #* Input: --- 916*cdf0e10cSrcweir #* 917*cdf0e10cSrcweir #* Output: --- 918*cdf0e10cSrcweir #* 919*cdf0e10cSrcweir #************************************************************************/ 920*cdf0e10cSrcweir 921*cdf0e10cSrcweir IMPL_LINK( ScColRowNameRangesDlg, Range1SelectHdl, void *, EMPTYARG ) 922*cdf0e10cSrcweir { 923*cdf0e10cSrcweir sal_uInt16 nSelectPos = aLbRange.GetSelectEntryPos(); 924*cdf0e10cSrcweir sal_uInt16 nCnt = aLbRange.GetEntryCount(); 925*cdf0e10cSrcweir sal_uInt16 nMoves = 0; 926*cdf0e10cSrcweir while ( nSelectPos < nCnt 927*cdf0e10cSrcweir && (sal_uLong)aLbRange.GetEntryData( nSelectPos ) == nEntryDataDelim ) 928*cdf0e10cSrcweir { // skip Delimiter 929*cdf0e10cSrcweir ++nMoves; 930*cdf0e10cSrcweir aLbRange.SelectEntryPos( ++nSelectPos ); 931*cdf0e10cSrcweir } 932*cdf0e10cSrcweir String aRangeStr = aLbRange.GetSelectEntry(); 933*cdf0e10cSrcweir if ( nMoves ) 934*cdf0e10cSrcweir { 935*cdf0e10cSrcweir if ( nSelectPos > 1 && nSelectPos >= nCnt ) 936*cdf0e10cSrcweir { // am Ende nicht auf dem " --- Zeile --- " Delimiter stehenbleiben 937*cdf0e10cSrcweir // wenn davor Eintraege existieren 938*cdf0e10cSrcweir nSelectPos = nCnt - 2; 939*cdf0e10cSrcweir aLbRange.SelectEntryPos( nSelectPos ); 940*cdf0e10cSrcweir aRangeStr = aLbRange.GetSelectEntry(); 941*cdf0e10cSrcweir } 942*cdf0e10cSrcweir else if ( nSelectPos > 2 && nSelectPos < nCnt && aRangeStr.Len() 943*cdf0e10cSrcweir && aRangeStr == aEdAssign.GetText() ) 944*cdf0e10cSrcweir { // nach oben wandern statt nach unten auf die vorherige Position 945*cdf0e10cSrcweir nSelectPos -= 2; 946*cdf0e10cSrcweir aLbRange.SelectEntryPos( nSelectPos ); 947*cdf0e10cSrcweir aRangeStr = aLbRange.GetSelectEntry(); 948*cdf0e10cSrcweir } 949*cdf0e10cSrcweir } 950*cdf0e10cSrcweir NameRangeMap::const_iterator itr = aRangeMap.find(aRangeStr); 951*cdf0e10cSrcweir if ( itr != aRangeMap.end() ) 952*cdf0e10cSrcweir { 953*cdf0e10cSrcweir sal_Bool bColName = 954*cdf0e10cSrcweir ((sal_uLong)aLbRange.GetEntryData( nSelectPos ) == nEntryDataCol); 955*cdf0e10cSrcweir UpdateRangeData( itr->second, bColName ); 956*cdf0e10cSrcweir aBtnAdd.Disable(); 957*cdf0e10cSrcweir aBtnRemove.Enable(); 958*cdf0e10cSrcweir } 959*cdf0e10cSrcweir else 960*cdf0e10cSrcweir { 961*cdf0e10cSrcweir if ( aEdAssign.GetText().Len() > 0 ) 962*cdf0e10cSrcweir { 963*cdf0e10cSrcweir if ( aEdAssign2.GetText().Len() > 0 ) 964*cdf0e10cSrcweir aBtnAdd.Enable(); 965*cdf0e10cSrcweir else 966*cdf0e10cSrcweir aBtnAdd.Disable(); 967*cdf0e10cSrcweir aBtnColHead.Enable(); 968*cdf0e10cSrcweir aBtnRowHead.Enable(); 969*cdf0e10cSrcweir aEdAssign2.Enable(); 970*cdf0e10cSrcweir aRbAssign2.Enable(); 971*cdf0e10cSrcweir } 972*cdf0e10cSrcweir else 973*cdf0e10cSrcweir { 974*cdf0e10cSrcweir aBtnAdd.Disable(); 975*cdf0e10cSrcweir aBtnColHead.Disable(); 976*cdf0e10cSrcweir aBtnRowHead.Disable(); 977*cdf0e10cSrcweir aEdAssign2.Disable(); 978*cdf0e10cSrcweir aRbAssign2.Disable(); 979*cdf0e10cSrcweir } 980*cdf0e10cSrcweir aBtnRemove.Disable(); 981*cdf0e10cSrcweir aEdAssign.GrabFocus(); 982*cdf0e10cSrcweir } 983*cdf0e10cSrcweir 984*cdf0e10cSrcweir aEdAssign.Enable(); 985*cdf0e10cSrcweir aRbAssign.Enable(); 986*cdf0e10cSrcweir 987*cdf0e10cSrcweir //@BugID 54702 Enablen/Disablen nur noch in Basisklasse 988*cdf0e10cSrcweir //SFX_APPWINDOW->Enable(); 989*cdf0e10cSrcweir return 0; 990*cdf0e10cSrcweir } 991*cdf0e10cSrcweir 992*cdf0e10cSrcweir 993*cdf0e10cSrcweir /************************************************************************* 994*cdf0e10cSrcweir #* Handler: Range1DataModifyHdl Datum:04.09.97 995*cdf0e10cSrcweir #*------------------------------------------------------------------------ 996*cdf0e10cSrcweir #* 997*cdf0e10cSrcweir #* Klasse: ScColRowNameRangesDlg 998*cdf0e10cSrcweir #* 999*cdf0e10cSrcweir #* Funktion: Wird ausgeloest, wenn in der Tabelle, der Label- 1000*cdf0e10cSrcweir #* Bereich geaendert wurde. 1001*cdf0e10cSrcweir #* 1002*cdf0e10cSrcweir #* Input: --- 1003*cdf0e10cSrcweir #* 1004*cdf0e10cSrcweir #* Output: --- 1005*cdf0e10cSrcweir #* 1006*cdf0e10cSrcweir #************************************************************************/ 1007*cdf0e10cSrcweir 1008*cdf0e10cSrcweir IMPL_LINK( ScColRowNameRangesDlg, Range1DataModifyHdl, void *, EMPTYARG ) 1009*cdf0e10cSrcweir { 1010*cdf0e10cSrcweir String aNewArea( aEdAssign.GetText() ); 1011*cdf0e10cSrcweir sal_Bool bValid = sal_False; 1012*cdf0e10cSrcweir if ( aNewArea.Len() > 0 ) 1013*cdf0e10cSrcweir { 1014*cdf0e10cSrcweir ScRange aRange; 1015*cdf0e10cSrcweir if ( (aRange.ParseAny( aNewArea, pDoc, pDoc->GetAddressConvention() ) & SCA_VALID) == SCA_VALID ) 1016*cdf0e10cSrcweir { 1017*cdf0e10cSrcweir SetColRowData( aRange ); 1018*cdf0e10cSrcweir bValid = sal_True; 1019*cdf0e10cSrcweir } 1020*cdf0e10cSrcweir } 1021*cdf0e10cSrcweir if ( bValid ) 1022*cdf0e10cSrcweir { 1023*cdf0e10cSrcweir aBtnAdd.Enable(); 1024*cdf0e10cSrcweir aBtnColHead.Enable(); 1025*cdf0e10cSrcweir aBtnRowHead.Enable(); 1026*cdf0e10cSrcweir aEdAssign2.Enable(); 1027*cdf0e10cSrcweir aRbAssign2.Enable(); 1028*cdf0e10cSrcweir } 1029*cdf0e10cSrcweir else 1030*cdf0e10cSrcweir { 1031*cdf0e10cSrcweir aBtnAdd.Disable(); 1032*cdf0e10cSrcweir aBtnColHead.Disable(); 1033*cdf0e10cSrcweir aBtnRowHead.Disable(); 1034*cdf0e10cSrcweir aEdAssign2.Disable(); 1035*cdf0e10cSrcweir aRbAssign2.Disable(); 1036*cdf0e10cSrcweir } 1037*cdf0e10cSrcweir aBtnRemove.Disable(); 1038*cdf0e10cSrcweir return 0; 1039*cdf0e10cSrcweir } 1040*cdf0e10cSrcweir 1041*cdf0e10cSrcweir 1042*cdf0e10cSrcweir /************************************************************************* 1043*cdf0e10cSrcweir #* Handler: Range2DataModifyHdl Datum:04.09.97 1044*cdf0e10cSrcweir #*------------------------------------------------------------------------ 1045*cdf0e10cSrcweir #* 1046*cdf0e10cSrcweir #* Klasse: ScColRowNameRangesDlg 1047*cdf0e10cSrcweir #* 1048*cdf0e10cSrcweir #* Funktion: Wird ausgeloest, wenn in der Tabelle, der Daten- 1049*cdf0e10cSrcweir #* Bereich geaendert wurde 1050*cdf0e10cSrcweir #* 1051*cdf0e10cSrcweir #* Input: --- 1052*cdf0e10cSrcweir #* 1053*cdf0e10cSrcweir #* Output: --- 1054*cdf0e10cSrcweir #* 1055*cdf0e10cSrcweir #************************************************************************/ 1056*cdf0e10cSrcweir 1057*cdf0e10cSrcweir IMPL_LINK( ScColRowNameRangesDlg, Range2DataModifyHdl, void *, EMPTYARG ) 1058*cdf0e10cSrcweir { 1059*cdf0e10cSrcweir String aNewData( aEdAssign2.GetText() ); 1060*cdf0e10cSrcweir if ( aNewData.Len() > 0 ) 1061*cdf0e10cSrcweir { 1062*cdf0e10cSrcweir ScRange aRange; 1063*cdf0e10cSrcweir if ( (aRange.ParseAny( aNewData, pDoc, pDoc->GetAddressConvention() ) & SCA_VALID) == SCA_VALID ) 1064*cdf0e10cSrcweir { 1065*cdf0e10cSrcweir AdjustColRowData( aRange ); 1066*cdf0e10cSrcweir aBtnAdd.Enable(); 1067*cdf0e10cSrcweir } 1068*cdf0e10cSrcweir else 1069*cdf0e10cSrcweir aBtnAdd.Disable(); 1070*cdf0e10cSrcweir } 1071*cdf0e10cSrcweir else 1072*cdf0e10cSrcweir { 1073*cdf0e10cSrcweir aBtnAdd.Disable(); 1074*cdf0e10cSrcweir } 1075*cdf0e10cSrcweir return 0; 1076*cdf0e10cSrcweir } 1077*cdf0e10cSrcweir 1078*cdf0e10cSrcweir 1079*cdf0e10cSrcweir /************************************************************************* 1080*cdf0e10cSrcweir #* Handler: ColClickHdl Datum:04.09.97 1081*cdf0e10cSrcweir #*------------------------------------------------------------------------ 1082*cdf0e10cSrcweir #* 1083*cdf0e10cSrcweir #* Klasse: ScColRowNameRangesDlg 1084*cdf0e10cSrcweir #* 1085*cdf0e10cSrcweir #* Funktion: Radiobutton fuer Spalten wurde betaetigt, 1086*cdf0e10cSrcweir #* die entsprechenden Einstellungen werden 1087*cdf0e10cSrcweir #* vorgenommen 1088*cdf0e10cSrcweir #* 1089*cdf0e10cSrcweir #* Input: --- 1090*cdf0e10cSrcweir #* 1091*cdf0e10cSrcweir #* Output: --- 1092*cdf0e10cSrcweir #* 1093*cdf0e10cSrcweir #************************************************************************/ 1094*cdf0e10cSrcweir 1095*cdf0e10cSrcweir IMPL_LINK( ScColRowNameRangesDlg, ColClickHdl, void *, EMPTYARG ) 1096*cdf0e10cSrcweir { 1097*cdf0e10cSrcweir if ( !aBtnColHead.GetSavedValue() ) 1098*cdf0e10cSrcweir { 1099*cdf0e10cSrcweir aBtnColHead.Check( sal_True ); 1100*cdf0e10cSrcweir aBtnRowHead.Check( sal_False ); 1101*cdf0e10cSrcweir if ( theCurArea.aStart.Row() == 0 && theCurArea.aEnd.Row() == MAXROW ) 1102*cdf0e10cSrcweir { 1103*cdf0e10cSrcweir theCurArea.aEnd.SetRow( MAXROW - 1 ); 1104*cdf0e10cSrcweir String aStr; 1105*cdf0e10cSrcweir theCurArea.Format( aStr, SCR_ABS_3D, pDoc, pDoc->GetAddressConvention() ); 1106*cdf0e10cSrcweir aEdAssign.SetText( aStr ); 1107*cdf0e10cSrcweir } 1108*cdf0e10cSrcweir ScRange aRange( theCurData ); 1109*cdf0e10cSrcweir aRange.aStart.SetRow( Min( (long)(theCurArea.aEnd.Row() + 1), (long)MAXROW ) ); 1110*cdf0e10cSrcweir aRange.aEnd.SetRow( MAXROW ); 1111*cdf0e10cSrcweir AdjustColRowData( aRange ); 1112*cdf0e10cSrcweir } 1113*cdf0e10cSrcweir return 0; 1114*cdf0e10cSrcweir } 1115*cdf0e10cSrcweir 1116*cdf0e10cSrcweir 1117*cdf0e10cSrcweir /************************************************************************* 1118*cdf0e10cSrcweir #* Handler: RowClickHdl Datum:04.09.97 1119*cdf0e10cSrcweir #*------------------------------------------------------------------------ 1120*cdf0e10cSrcweir #* 1121*cdf0e10cSrcweir #* Klasse: ScColRowNameRangesDlg 1122*cdf0e10cSrcweir #* 1123*cdf0e10cSrcweir #* Funktion: Radiobutton fuer Zeilen wurde betaetigt, 1124*cdf0e10cSrcweir #* die entsprechenden Einstellungen werden 1125*cdf0e10cSrcweir #* vorgenommen 1126*cdf0e10cSrcweir #* 1127*cdf0e10cSrcweir #* Input: --- 1128*cdf0e10cSrcweir #* 1129*cdf0e10cSrcweir #* Output: --- 1130*cdf0e10cSrcweir #* 1131*cdf0e10cSrcweir #************************************************************************/ 1132*cdf0e10cSrcweir 1133*cdf0e10cSrcweir IMPL_LINK( ScColRowNameRangesDlg, RowClickHdl, void *, EMPTYARG ) 1134*cdf0e10cSrcweir { 1135*cdf0e10cSrcweir if ( !aBtnRowHead.GetSavedValue() ) 1136*cdf0e10cSrcweir { 1137*cdf0e10cSrcweir aBtnRowHead.Check( sal_True ); 1138*cdf0e10cSrcweir aBtnColHead.Check( sal_False ); 1139*cdf0e10cSrcweir if ( theCurArea.aStart.Col() == 0 && theCurArea.aEnd.Col() == MAXCOL ) 1140*cdf0e10cSrcweir { 1141*cdf0e10cSrcweir theCurArea.aEnd.SetCol( MAXCOL - 1 ); 1142*cdf0e10cSrcweir String aStr; 1143*cdf0e10cSrcweir theCurArea.Format( aStr, SCR_ABS_3D, pDoc, pDoc->GetAddressConvention() ); 1144*cdf0e10cSrcweir aEdAssign.SetText( aStr ); 1145*cdf0e10cSrcweir } 1146*cdf0e10cSrcweir ScRange aRange( theCurData ); 1147*cdf0e10cSrcweir aRange.aStart.SetCol( static_cast<SCCOL>(Min( (long)(theCurArea.aEnd.Col() + 1), (long)MAXCOL )) ); 1148*cdf0e10cSrcweir aRange.aEnd.SetCol( MAXCOL ); 1149*cdf0e10cSrcweir AdjustColRowData( aRange ); 1150*cdf0e10cSrcweir } 1151*cdf0e10cSrcweir return 0; 1152*cdf0e10cSrcweir } 1153*cdf0e10cSrcweir 1154*cdf0e10cSrcweir 1155*cdf0e10cSrcweir IMPL_LINK( ScColRowNameRangesDlg, GetFocusHdl, Control*, pCtrl ) 1156*cdf0e10cSrcweir { 1157*cdf0e10cSrcweir if( (pCtrl == (Control*)&aEdAssign) || (pCtrl == (Control*)&aRbAssign) ) 1158*cdf0e10cSrcweir pEdActive = &aEdAssign; 1159*cdf0e10cSrcweir else if( (pCtrl == (Control*)&aEdAssign2) || (pCtrl == (Control*)&aRbAssign2) ) 1160*cdf0e10cSrcweir pEdActive = &aEdAssign2; 1161*cdf0e10cSrcweir else 1162*cdf0e10cSrcweir pEdActive = NULL; 1163*cdf0e10cSrcweir 1164*cdf0e10cSrcweir if( pEdActive ) 1165*cdf0e10cSrcweir pEdActive->SetSelection( Selection( 0, SELECTION_MAX ) ); 1166*cdf0e10cSrcweir 1167*cdf0e10cSrcweir return 0; 1168*cdf0e10cSrcweir } 1169*cdf0e10cSrcweir 1170*cdf0e10cSrcweir 1171*cdf0e10cSrcweir IMPL_LINK( ScColRowNameRangesDlg, LoseFocusHdl, Control*, EMPTYARG ) 1172*cdf0e10cSrcweir { 1173*cdf0e10cSrcweir bDlgLostFocus = !IsActive(); 1174*cdf0e10cSrcweir return 0; 1175*cdf0e10cSrcweir } 1176