private bool orderTextAsc(int first, int last, int orderBy)
{
int i = 0;
int j = 0;
int t = 0;
int q = 0;
bool bChanged = false;
t = pEstimateLoops(last - first);
for (i = first + 1; i <= last; i++)
{
bChanged = false;
for (j = last; j >= i; j--)
{
q = q + 1;
String text1 = cReportGlobals.valVariant(m_rows.Rows[m_vRowsIndex[j]][orderBy]).ToString();
String text2 = cReportGlobals.valVariant(m_rows.Rows[m_vRowsIndex[j - 1]][orderBy]).ToString();
if (String.Compare(text1.ToLower(),
text2.ToLower(),
StringComparison.CurrentCulture) < 0)
{
if (!OnProgress("", 0, q, t))
{
return false;
}
changeRow(j, j - 1);
bChanged = true;
}
}
if (!OnProgress("", 0, q, t))
{
return false;
}
if (!bChanged)
{
break;
}
}
return true;
}